@sellmate/design-system 1.1.0 → 1.3.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 (402) hide show
  1. package/dist/cjs/component.datepicker-Cw_-oidk.js +121 -0
  2. package/dist/cjs/{component.table-B7brIpIQ.js → component.table-CMqGfEui.js} +11 -1
  3. package/dist/cjs/design-system.cjs.js +2 -2
  4. package/dist/cjs/{index-BlxrCRYi.js → index-Cw-78mnC.js} +1 -1
  5. package/dist/cjs/index.cjs.js +1 -1
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/sd-action-modal.cjs.entry.js +2 -2
  8. package/dist/cjs/sd-badge.cjs.entry.js +2 -2
  9. package/dist/cjs/sd-barcode-input.cjs.entry.js +2 -2
  10. package/dist/cjs/sd-button_2.cjs.entry.js +278 -11
  11. package/dist/cjs/sd-calendar_2.cjs.entry.js +262 -0
  12. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  13. package/dist/cjs/sd-checkbox.cjs.entry.js +4 -4
  14. package/dist/cjs/sd-chip.cjs.entry.js +4 -4
  15. package/dist/cjs/sd-circle-progress.cjs.entry.js +2 -2
  16. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +4 -4
  17. package/dist/cjs/sd-date-box.cjs.entry.js +8 -3
  18. package/dist/cjs/sd-date-picker.config-D3lTpa6W.js +37 -0
  19. package/dist/cjs/sd-date-picker_7.cjs.entry.js +27 -20
  20. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +49 -49
  21. package/dist/cjs/sd-dropdown-button.cjs.entry.js +10 -6
  22. package/dist/cjs/sd-field_3.cjs.entry.js +31 -30
  23. package/dist/cjs/sd-form.cjs.entry.js +5 -5
  24. package/dist/cjs/sd-ghost-button.cjs.entry.js +4 -4
  25. package/dist/cjs/sd-guide.cjs.entry.js +5 -5
  26. package/dist/cjs/sd-key-value-table.cjs.entry.js +10 -10
  27. package/dist/cjs/sd-linear-progress.cjs.entry.js +2 -2
  28. package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
  29. package/dist/cjs/sd-modal-container.cjs.entry.js +3 -3
  30. package/dist/cjs/sd-pagination_4.cjs.entry.js +116 -43
  31. package/dist/cjs/sd-popover.cjs.entry.js +6 -6
  32. package/dist/cjs/sd-popup.cjs.entry.js +2 -2
  33. package/dist/cjs/sd-portal.cjs.entry.js +3 -3
  34. package/dist/cjs/sd-radio-button.cjs.entry.js +7 -4
  35. package/dist/cjs/sd-radio.cjs.entry.js +2 -2
  36. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +15 -11
  37. package/dist/cjs/sd-select_3.cjs.entry.js +20 -15
  38. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  39. package/dist/cjs/sd-table.cjs.entry.js +170 -47
  40. package/dist/cjs/{sd-table.config-CDyioyE2.js → sd-table.config-BIpldZtw.js} +13 -2
  41. package/dist/cjs/sd-tabs.cjs.entry.js +8 -3
  42. package/dist/cjs/sd-tag.cjs.entry.js +10 -10
  43. package/dist/cjs/sd-td.cjs.entry.js +52 -10
  44. package/dist/cjs/sd-text-link.cjs.entry.js +9 -4
  45. package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
  46. package/dist/cjs/sd-toast.cjs.entry.js +3 -3
  47. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  48. package/dist/cjs/{tooltipArrow-N6nQ1QT-.js → tooltipArrow-BjSFKIUq.js} +1 -1
  49. package/dist/cjs/useDatePicker-dCuEgvjX.js +103 -0
  50. package/dist/collection/collection-manifest.json +1 -2
  51. package/dist/collection/components/sd-action-modal/sd-action-modal.js +1 -1
  52. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  53. package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +1 -1
  54. package/dist/collection/components/sd-button/sd-button.js +9 -8
  55. package/dist/collection/components/sd-calendar/sd-calendar.config.js +51 -0
  56. package/dist/collection/components/sd-calendar/sd-calendar.css +134 -73
  57. package/dist/collection/components/sd-calendar/sd-calendar.js +172 -133
  58. package/dist/collection/components/sd-card/sd-card.js +1 -1
  59. package/dist/collection/components/sd-checkbox/sd-checkbox.js +3 -3
  60. package/dist/collection/components/sd-chip/sd-chip.js +4 -4
  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 +2 -2
  63. package/dist/collection/components/sd-date-box/sd-date-box.js +7 -2
  64. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +8 -3
  65. package/dist/collection/components/sd-date-picker/sd-date-picker.config.js +0 -38
  66. package/dist/collection/components/sd-date-picker/sd-date-picker.js +3 -2
  67. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +12 -12
  68. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.config.js +2 -1
  69. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +3 -3
  70. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +6 -2
  71. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +3 -3
  72. package/dist/collection/components/sd-field/sd-field.js +23 -22
  73. package/dist/collection/components/sd-file-picker/sd-file-picker.js +7 -2
  74. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +4 -4
  75. package/dist/collection/components/sd-form/sd-form.js +4 -4
  76. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +3 -3
  77. package/dist/collection/components/sd-guide/sd-guide.js +4 -4
  78. package/dist/collection/components/sd-input/sd-input.js +3 -3
  79. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +8 -8
  80. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  81. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  82. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  83. package/dist/collection/components/sd-modal-container/sd-modal-container.js +2 -2
  84. package/dist/collection/components/sd-number-input/sd-number-input.js +6 -6
  85. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  86. package/dist/collection/components/sd-popover/sd-popover.js +5 -5
  87. package/dist/collection/components/sd-popup/sd-popup.js +1 -1
  88. package/dist/collection/components/sd-portal/sd-portal.js +2 -2
  89. package/dist/collection/components/sd-radio/sd-radio.js +1 -1
  90. package/dist/collection/components/sd-radio-button/sd-radio-button.js +6 -3
  91. package/dist/collection/components/sd-radio-group/sd-radio-group.js +1 -1
  92. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +7 -3
  93. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +7 -7
  94. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +5 -5
  95. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +9 -4
  96. package/dist/collection/components/sd-select/sd-select.js +5 -5
  97. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  98. package/dist/collection/components/sd-table/sd-table.config.js +4 -0
  99. package/dist/collection/components/sd-table/sd-table.css +22 -3
  100. package/dist/collection/components/sd-table/sd-table.js +197 -50
  101. package/dist/collection/components/sd-table/sd-table.stories.helpers.js +2 -3
  102. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +5 -5
  103. package/dist/collection/components/sd-table/sd-td/sd-td.js +111 -9
  104. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +30 -16
  105. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +20 -1
  106. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +97 -18
  107. package/dist/collection/components/sd-tabs/sd-tabs.js +7 -2
  108. package/dist/collection/components/sd-tag/sd-tag.config.js +3 -3
  109. package/dist/collection/components/sd-tag/sd-tag.js +6 -3
  110. package/dist/collection/components/sd-text-link/sd-text-link.js +8 -3
  111. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  112. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  113. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  114. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  115. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  116. package/dist/collection/index.js +1 -1
  117. package/dist/collection/utils/modal.js +1 -1
  118. package/dist/components/index.js +1 -1
  119. package/dist/components/p-B8o25hOw.js +1 -0
  120. package/dist/components/p-BFC3Etk2.js +1 -0
  121. package/dist/components/p-BQn6le_Y.js +1 -0
  122. package/dist/components/p-BRk9YZBe.js +1 -0
  123. package/dist/components/p-BRxXhFqt.js +1 -0
  124. package/dist/components/{p-D8WAP9T3.js → p-BSfu4DO2.js} +1 -1
  125. package/dist/components/p-BZabVWBD.js +1 -0
  126. package/dist/components/{p-BfkuCNCI.js → p-BeBiPTbd.js} +1 -1
  127. package/dist/components/p-BjkROjjt.js +1 -0
  128. package/dist/components/p-BjpbUGud.js +1 -0
  129. package/dist/components/p-BkWaPXXj.js +1 -0
  130. package/dist/components/p-BnfUIhUj.js +1 -0
  131. package/dist/components/p-Bs1Z5QtN.js +1 -0
  132. package/dist/components/{p-MQTl8fGT.js → p-BwPmM1Pm.js} +1 -1
  133. package/dist/components/p-C3fqSH7A.js +1 -0
  134. package/dist/components/p-CIUE4qr7.js +1 -0
  135. package/dist/components/p-CLxVZFEG.js +1 -0
  136. package/dist/components/p-CPuyhF6g.js +1 -0
  137. package/dist/components/p-CpgTSxf0.js +1 -0
  138. package/dist/components/p-Cx_d5vsS.js +1 -0
  139. package/dist/components/{p-BeK8amzx.js → p-CyObYB-g.js} +1 -1
  140. package/dist/components/p-D7nYP2a4.js +1 -0
  141. package/dist/components/{p-BPsOJlCP.js → p-DS7Ypvt5.js} +1 -1
  142. package/dist/components/p-Da5i_Sa6.js +1 -0
  143. package/dist/components/p-DhTcn6jX.js +1 -0
  144. package/dist/components/p-DlREBZ-C.js +1 -0
  145. package/dist/components/p-DnW8EAqd.js +1 -0
  146. package/dist/components/{p-D5TRyquv.js → p-FKKk7Bk8.js} +1 -1
  147. package/dist/components/{p-Dr1AMbBj.js → p-INdVvadB.js} +1 -1
  148. package/dist/components/p-JlZdKw4C.js +1 -0
  149. package/dist/components/p-VuxN5d2D.js +1 -0
  150. package/dist/components/p-WAsath62.js +1 -0
  151. package/dist/components/{p-ofkgu5aS.js → p-X-8I-A3g.js} +1 -1
  152. package/dist/components/{p-B1MabGRR.js → p-Z5Vk33zf.js} +1 -1
  153. package/dist/components/{p-DG45uNxd.js → p-kSfaCwf1.js} +1 -1
  154. package/dist/components/p-mmdt-WnS.js +1 -0
  155. package/dist/components/p-oyZgWRnC.js +1 -0
  156. package/dist/components/p-t161LJqb.js +1 -0
  157. package/dist/components/{p-CGBnxqG2.js → p-wOAxmZ1V.js} +1 -1
  158. package/dist/components/p-xX3QT-8K.js +1 -0
  159. package/dist/components/sd-action-modal.js +1 -1
  160. package/dist/components/sd-badge.js +1 -1
  161. package/dist/components/sd-barcode-input.js +1 -1
  162. package/dist/components/sd-button.js +1 -1
  163. package/dist/components/sd-calendar.js +1 -1
  164. package/dist/components/sd-card.js +1 -1
  165. package/dist/components/sd-checkbox.js +1 -1
  166. package/dist/components/sd-chip.js +1 -1
  167. package/dist/components/sd-circle-progress.js +1 -1
  168. package/dist/components/sd-confirm-modal.js +1 -1
  169. package/dist/components/sd-date-box.js +1 -1
  170. package/dist/components/sd-date-picker-trigger.js +1 -1
  171. package/dist/components/sd-date-picker.js +1 -1
  172. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  173. package/dist/components/sd-date-range-picker.js +1 -1
  174. package/dist/components/sd-dropdown-button.js +1 -1
  175. package/dist/components/sd-field.js +1 -1
  176. package/dist/components/sd-file-picker.js +1 -1
  177. package/dist/components/sd-floating-portal.js +1 -1
  178. package/dist/components/sd-form.js +1 -1
  179. package/dist/components/sd-ghost-button.js +1 -1
  180. package/dist/components/sd-guide.js +1 -1
  181. package/dist/components/sd-icon.js +1 -1
  182. package/dist/components/sd-input.js +1 -1
  183. package/dist/components/sd-key-value-table.js +1 -1
  184. package/dist/components/sd-linear-progress.js +1 -1
  185. package/dist/components/sd-loading-container.js +1 -1
  186. package/dist/components/sd-loading-modal.js +1 -1
  187. package/dist/components/sd-modal-container.js +1 -1
  188. package/dist/components/sd-number-input.js +1 -1
  189. package/dist/components/sd-pagination.js +1 -1
  190. package/dist/components/sd-popover.js +1 -1
  191. package/dist/components/sd-popup.js +1 -1
  192. package/dist/components/sd-portal.js +1 -1
  193. package/dist/components/sd-radio-button.js +1 -1
  194. package/dist/components/sd-radio-group.js +1 -1
  195. package/dist/components/sd-radio.js +1 -1
  196. package/dist/components/sd-select-list-item-search.js +1 -1
  197. package/dist/components/sd-select-list-item.js +1 -1
  198. package/dist/components/sd-select-listbox.js +1 -1
  199. package/dist/components/sd-select-trigger.js +1 -1
  200. package/dist/components/sd-select.js +1 -1
  201. package/dist/components/sd-switch.js +1 -1
  202. package/dist/components/sd-table.js +1 -1
  203. package/dist/components/sd-tabs.js +1 -1
  204. package/dist/components/sd-tag.js +1 -1
  205. package/dist/components/sd-tbody.js +1 -1
  206. package/dist/components/sd-td.js +1 -1
  207. package/dist/components/sd-text-link.js +1 -1
  208. package/dist/components/sd-textarea.js +1 -1
  209. package/dist/components/sd-thead.js +1 -1
  210. package/dist/components/sd-toast-container.js +1 -1
  211. package/dist/components/sd-toast.js +1 -1
  212. package/dist/components/sd-toggle.js +1 -1
  213. package/dist/components/sd-tooltip.js +1 -1
  214. package/dist/components/sd-tr.js +1 -1
  215. package/dist/design-system/design-system.css +1 -1
  216. package/dist/design-system/design-system.esm.js +1 -1
  217. package/dist/design-system/index.esm.js +1 -1
  218. package/dist/design-system/p-00854a0a.entry.js +1 -0
  219. package/dist/design-system/p-00b2c850.entry.js +1 -0
  220. package/dist/design-system/p-03badf68.entry.js +1 -0
  221. package/dist/design-system/p-0U6dRjlq.js +2 -0
  222. package/dist/design-system/{p-d78fbe16.entry.js → p-11b904a3.entry.js} +1 -1
  223. package/dist/design-system/p-32e2d71e.entry.js +1 -0
  224. package/dist/design-system/p-399d416c.entry.js +1 -0
  225. package/dist/design-system/{p-29ed11e5.entry.js → p-3b8954d9.entry.js} +1 -1
  226. package/dist/design-system/{p-feeb0cc5.entry.js → p-481e6934.entry.js} +1 -1
  227. package/dist/design-system/{p-328fae12.entry.js → p-4a91875c.entry.js} +1 -1
  228. package/dist/design-system/p-563b6fc2.entry.js +1 -0
  229. package/dist/design-system/p-679bce6c.entry.js +1 -0
  230. package/dist/design-system/{p-b6ca4461.entry.js → p-74bf0ed9.entry.js} +1 -1
  231. package/dist/design-system/{p-4e2953eb.entry.js → p-84a94775.entry.js} +1 -1
  232. package/dist/design-system/p-8f4ccae4.entry.js +1 -0
  233. package/dist/design-system/p-92f368a2.entry.js +1 -0
  234. package/dist/design-system/p-9681b0ba.entry.js +1 -0
  235. package/dist/design-system/{p-f5576a0d.entry.js → p-9b9bf9db.entry.js} +1 -1
  236. package/dist/design-system/p-9f7f1b8b.entry.js +1 -0
  237. package/dist/design-system/p-BGtUaScP.js +1 -0
  238. package/dist/design-system/p-BQn6le_Y.js +1 -0
  239. package/dist/design-system/p-BnfUIhUj.js +1 -0
  240. package/dist/{components/p-CT3dfy3K.js → design-system/p-C29HUShl.js} +1 -1
  241. package/dist/design-system/p-TF8_Lyhq.js +1 -0
  242. package/dist/design-system/p-a640e509.entry.js +1 -0
  243. package/dist/design-system/{p-20a50702.entry.js → p-a71d4947.entry.js} +1 -1
  244. package/dist/design-system/p-a7ea1cf0.entry.js +1 -0
  245. package/dist/design-system/{p-e1c0a3c9.entry.js → p-a97033a2.entry.js} +1 -1
  246. package/dist/design-system/p-a98f9a29.entry.js +1 -0
  247. package/dist/design-system/{p-7882e388.entry.js → p-ae117afa.entry.js} +1 -1
  248. package/dist/design-system/{p-f3cfff78.entry.js → p-aeccfb2b.entry.js} +1 -1
  249. package/dist/design-system/p-c7099e9e.entry.js +1 -0
  250. package/dist/design-system/p-cc97f4b4.entry.js +1 -0
  251. package/dist/design-system/{p-b96c694c.entry.js → p-d39e515d.entry.js} +1 -1
  252. package/dist/design-system/p-dbeaeb31.entry.js +1 -0
  253. package/dist/design-system/p-e23dac79.entry.js +1 -0
  254. package/dist/design-system/{p-c0f60b00.entry.js → p-e611dcd4.entry.js} +1 -1
  255. package/dist/design-system/{p-a942dfbe.entry.js → p-e8e64511.entry.js} +1 -1
  256. package/dist/design-system/{p-cd8e4dd6.entry.js → p-e902a3f4.entry.js} +1 -1
  257. package/dist/design-system/p-f7074386.entry.js +1 -0
  258. package/dist/design-system/p-f721a6c6.entry.js +1 -0
  259. package/dist/design-system/{p-b1bb0d72.entry.js → p-fc5c4f85.entry.js} +1 -1
  260. package/dist/design-system/p-fe0a5368.entry.js +1 -0
  261. package/dist/design-system/{p-cbda9194.entry.js → p-fe3ae346.entry.js} +1 -1
  262. package/dist/design-system/p-ffaa4b5d.entry.js +1 -0
  263. package/dist/design-system/p-mmdt-WnS.js +1 -0
  264. package/dist/esm/component.datepicker-BQn6le_Y.js +119 -0
  265. package/dist/esm/{component.table-BQ6at17Y.js → component.table-BnfUIhUj.js} +11 -1
  266. package/dist/esm/design-system.js +3 -3
  267. package/dist/esm/{index-CLCoul8o.js → index-0U6dRjlq.js} +1 -1
  268. package/dist/esm/index.js +1 -1
  269. package/dist/esm/loader.js +3 -3
  270. package/dist/esm/sd-action-modal.entry.js +2 -2
  271. package/dist/esm/sd-badge.entry.js +2 -2
  272. package/dist/esm/sd-barcode-input.entry.js +2 -2
  273. package/dist/esm/sd-button_2.entry.js +277 -10
  274. package/dist/esm/sd-calendar_2.entry.js +259 -0
  275. package/dist/esm/sd-card.entry.js +2 -2
  276. package/dist/esm/sd-checkbox.entry.js +4 -4
  277. package/dist/esm/sd-chip.entry.js +4 -4
  278. package/dist/esm/sd-circle-progress.entry.js +2 -2
  279. package/dist/esm/sd-confirm-modal_2.entry.js +4 -4
  280. package/dist/esm/sd-date-box.entry.js +8 -3
  281. package/dist/esm/sd-date-picker.config-CGEE3DkI.js +34 -0
  282. package/dist/esm/sd-date-picker_7.entry.js +27 -20
  283. package/dist/esm/sd-date-range-picker-calendar.entry.js +22 -22
  284. package/dist/esm/sd-dropdown-button.entry.js +10 -6
  285. package/dist/esm/sd-field_3.entry.js +31 -30
  286. package/dist/esm/sd-form.entry.js +5 -5
  287. package/dist/esm/sd-ghost-button.entry.js +4 -4
  288. package/dist/esm/sd-guide.entry.js +5 -5
  289. package/dist/esm/sd-key-value-table.entry.js +10 -10
  290. package/dist/esm/sd-linear-progress.entry.js +2 -2
  291. package/dist/esm/sd-loading-container.entry.js +3 -3
  292. package/dist/esm/sd-modal-container.entry.js +3 -3
  293. package/dist/esm/sd-pagination_4.entry.js +116 -43
  294. package/dist/esm/sd-popover.entry.js +6 -6
  295. package/dist/esm/sd-popup.entry.js +2 -2
  296. package/dist/esm/sd-portal.entry.js +3 -3
  297. package/dist/esm/sd-radio-button.entry.js +7 -4
  298. package/dist/esm/sd-radio.entry.js +2 -2
  299. package/dist/esm/sd-select-list-item_2.entry.js +15 -11
  300. package/dist/esm/sd-select_3.entry.js +20 -15
  301. package/dist/esm/sd-switch.entry.js +2 -2
  302. package/dist/esm/{sd-table.config-0Te8GLCI.js → sd-table.config-B-VgXXT7.js} +13 -3
  303. package/dist/esm/sd-table.entry.js +170 -47
  304. package/dist/esm/sd-tabs.entry.js +8 -3
  305. package/dist/esm/sd-tag.entry.js +10 -10
  306. package/dist/esm/sd-td.entry.js +52 -10
  307. package/dist/esm/sd-text-link.entry.js +9 -4
  308. package/dist/esm/sd-toast-container.entry.js +2 -2
  309. package/dist/esm/sd-toast.entry.js +3 -3
  310. package/dist/esm/sd-toggle.entry.js +2 -2
  311. package/dist/esm/{tooltipArrow-Bc-yw2nt.js → tooltipArrow-O5LOsHae.js} +1 -1
  312. package/dist/esm/useDatePicker-D5RmWGOp.js +98 -0
  313. package/dist/types/components/sd-calendar/sd-calendar.config.d.ts +55 -0
  314. package/dist/types/components/sd-calendar/sd-calendar.d.ts +18 -21
  315. package/dist/types/components/sd-date-picker/sd-date-picker.config.d.ts +0 -38
  316. package/dist/types/components/sd-date-range-picker/sd-date-range-picker.config.d.ts +2 -1
  317. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.config.d.ts +3 -2
  318. package/dist/types/components/sd-table/constants.d.ts +2 -0
  319. package/dist/types/components/sd-table/sd-table.config.d.ts +4 -0
  320. package/dist/types/components/sd-table/sd-table.d.ts +19 -15
  321. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +6 -0
  322. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +7 -0
  323. package/dist/types/components/sd-tag/sd-tag.d.ts +1 -0
  324. package/dist/types/components.d.ts +47 -60
  325. package/dist/types/index.d.ts +4 -3
  326. package/hydrate/index.js +1359 -1130
  327. package/hydrate/index.mjs +1359 -1130
  328. package/package.json +1 -1
  329. package/dist/cjs/resolveColor-B0hzQNLG.js +0 -270
  330. package/dist/cjs/sd-calendar.cjs.entry.js +0 -143
  331. package/dist/cjs/sd-date-picker-calendar_2.cjs.entry.js +0 -214
  332. package/dist/cjs/sd-date-picker.config-CjvrFpYK.js +0 -177
  333. package/dist/cjs/useDatePicker-cK_XK_P6.js +0 -48
  334. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.css +0 -117
  335. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +0 -246
  336. package/dist/components/p--t9jBTYS.js +0 -1
  337. package/dist/components/p-At6nBeyO.js +0 -1
  338. package/dist/components/p-B6cqMQaM.js +0 -1
  339. package/dist/components/p-B73VhbYi.js +0 -1
  340. package/dist/components/p-BDQQllAo.js +0 -1
  341. package/dist/components/p-BDr27lvk.js +0 -1
  342. package/dist/components/p-BQ6at17Y.js +0 -1
  343. package/dist/components/p-BW_sBt7X.js +0 -1
  344. package/dist/components/p-BX3TJuQY.js +0 -1
  345. package/dist/components/p-Bm_T3qE0.js +0 -1
  346. package/dist/components/p-BnzK4uU4.js +0 -1
  347. package/dist/components/p-BqkJ0rZv.js +0 -1
  348. package/dist/components/p-C4PmGpW8.js +0 -1
  349. package/dist/components/p-C9CszVFl.js +0 -1
  350. package/dist/components/p-CGQWERwE.js +0 -1
  351. package/dist/components/p-CZmKBmKx.js +0 -1
  352. package/dist/components/p-CnarDyZi.js +0 -1
  353. package/dist/components/p-Cr2ghUra.js +0 -1
  354. package/dist/components/p-Cspm6LxP.js +0 -1
  355. package/dist/components/p-Cx3jXw9J.js +0 -1
  356. package/dist/components/p-DG-4Ifco.js +0 -1
  357. package/dist/components/p-DTrMR0rx.js +0 -1
  358. package/dist/components/p-DfXAgw0E.js +0 -1
  359. package/dist/components/p-MMkRcTBd.js +0 -1
  360. package/dist/components/p-ZstG0XdT.js +0 -1
  361. package/dist/components/p-h7eBUL4i.js +0 -1
  362. package/dist/components/p-lyB7zSp-.js +0 -1
  363. package/dist/components/p-oIM6jNZe.js +0 -1
  364. package/dist/components/p-oKHZl8yu.js +0 -1
  365. package/dist/components/sd-date-picker-calendar.d.ts +0 -11
  366. package/dist/components/sd-date-picker-calendar.js +0 -1
  367. package/dist/design-system/p-02289728.entry.js +0 -1
  368. package/dist/design-system/p-17d66d85.entry.js +0 -1
  369. package/dist/design-system/p-18466728.entry.js +0 -1
  370. package/dist/design-system/p-1bb86d69.entry.js +0 -1
  371. package/dist/design-system/p-21874054.entry.js +0 -1
  372. package/dist/design-system/p-282cbefa.entry.js +0 -1
  373. package/dist/design-system/p-35dce399.entry.js +0 -1
  374. package/dist/design-system/p-39ff56b4.entry.js +0 -1
  375. package/dist/design-system/p-3cb712a6.entry.js +0 -1
  376. package/dist/design-system/p-7610153d.entry.js +0 -1
  377. package/dist/design-system/p-7722ddeb.entry.js +0 -1
  378. package/dist/design-system/p-7bfa0cf9.entry.js +0 -1
  379. package/dist/design-system/p-824ecfb5.entry.js +0 -1
  380. package/dist/design-system/p-9a04b341.entry.js +0 -1
  381. package/dist/design-system/p-B6cqMQaM.js +0 -1
  382. package/dist/design-system/p-BQ6at17Y.js +0 -1
  383. package/dist/design-system/p-CGQWERwE.js +0 -1
  384. package/dist/design-system/p-CLCoul8o.js +0 -2
  385. package/dist/design-system/p-Ce0cmS4R.js +0 -1
  386. package/dist/design-system/p-DTrMR0rx.js +0 -1
  387. package/dist/design-system/p-Dmf0PYdM.js +0 -1
  388. package/dist/design-system/p-a7a0ca14.entry.js +0 -1
  389. package/dist/design-system/p-b04b22c6.entry.js +0 -1
  390. package/dist/design-system/p-baed13e4.entry.js +0 -1
  391. package/dist/design-system/p-bd45e65d.entry.js +0 -1
  392. package/dist/design-system/p-bf4156d8.entry.js +0 -1
  393. package/dist/design-system/p-c228c2c7.entry.js +0 -1
  394. package/dist/design-system/p-cf382479.entry.js +0 -1
  395. package/dist/design-system/p-d0de34fd.entry.js +0 -1
  396. package/dist/design-system/p-f60cc7be.entry.js +0 -1
  397. package/dist/esm/resolveColor-Ce0cmS4R.js +0 -268
  398. package/dist/esm/sd-calendar.entry.js +0 -141
  399. package/dist/esm/sd-date-picker-calendar_2.entry.js +0 -211
  400. package/dist/esm/sd-date-picker.config-B6cqMQaM.js +0 -171
  401. package/dist/esm/useDatePicker-DTrMR0rx.js +0 -45
  402. package/dist/types/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.d.ts +0 -26
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BlxrCRYi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
  var index$1 = require('./index-BUvXpPc3.js');
5
5
  var sdSelect_config = require('./sd-select.config-B19ptCT2.js');
6
6
 
@@ -121,7 +121,7 @@ const SdSelect = class {
121
121
  }
122
122
  getSelectedOptions() {
123
123
  const val = this.value;
124
- if (!val || !Array.isArray(val))
124
+ if (val == null || !Array.isArray(val))
125
125
  return [];
126
126
  if (this.emitValue) {
127
127
  return val
@@ -265,15 +265,15 @@ const SdSelect = class {
265
265
  this.closeDropdown();
266
266
  },
267
267
  };
268
- return (index.h("sd-field", { key: '18edcdfdc3a9a2bd17ae0e3852eec94151275e18', 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: () => {
268
+ return (index.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: () => {
269
269
  this.hovered = true;
270
270
  }, onMouseLeave: () => {
271
271
  this.hovered = false;
272
- } }, index.h("div", { key: '39efa02a58acbc53315087cceb732b488920dbe8', class: "sd-select", ref: el => {
272
+ } }, index.h("div", { key: 'f04f2f331c27745035c35d96d5262398065589a8', class: "sd-select", ref: el => {
273
273
  this.triggerRef = el;
274
- } }, index.h("sd-select-trigger", { key: 'e03ce9208f4af5226461ecdfb0d15bade4f277dd', ref: el => {
274
+ } }, index.h("sd-select-trigger", { key: 'b66e83ff248618c815b155f27445f3da9e91361b', ref: el => {
275
275
  this.triggerComponentRef = el;
276
- }, 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) && (index.h("sd-portal", { key: '9181fd551885e001f139cab9634a2ac3b0f89d47', ...portalProps }, index.h("sd-select-listbox", { key: '6ed356d2ceea79562ce448584514c23fbff20090', 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) })))));
276
+ }, 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) && (index.h("sd-portal", { key: 'bd5b46d8e4849d235e39a9d9cfc549fdbe260076', ...portalProps }, index.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) })))));
277
277
  }
278
278
  static get watchers() { return {
279
279
  "isOpen": [{
@@ -351,7 +351,7 @@ const SdSelectListbox = class {
351
351
  return count >= sdSelect_config.SEARCH_THRESHOLD;
352
352
  }
353
353
  get filteredOptions() {
354
- if (!this.searchKeyword)
354
+ if (this.searchKeyword === '')
355
355
  return this.options;
356
356
  if (this.isDepth)
357
357
  return sdSelect_config.filterTree(this.options, this.searchKeyword);
@@ -364,7 +364,7 @@ const SdSelectListbox = class {
364
364
  return this.filteredOptions.length === 0;
365
365
  }
366
366
  getSelectedValues() {
367
- if (!this.value || !Array.isArray(this.value))
367
+ if (this.value == null || !Array.isArray(this.value))
368
368
  return new Set();
369
369
  if (this.emitValue) {
370
370
  return new Set(this.value);
@@ -487,7 +487,7 @@ const SdSelectListbox = class {
487
487
  // filterTree 가 매 호출마다 옵션 객체를 새로 복제하기 때문에 참조 비교
488
488
  // (=== / indexOf) 는 검색이 적용된 동안 항상 실패한다. 고유 식별자인
489
489
  // value 로 비교해야 한다.
490
- return !!focused && focused.value === option.value;
490
+ return focused != null && focused.value === option.value;
491
491
  }
492
492
  resetFocusOnFilter() {
493
493
  // 필터가 바뀌면 이전 인덱스가 가리키던 항목이 사라질 수 있으므로
@@ -637,9 +637,9 @@ const SdSelectListbox = class {
637
637
  '--listbox-max-height': this.maxHeight ?? '260px',
638
638
  '--listbox-radius': `${sdSelect_config.LIST_BOX_LAYOUT.radius}px`,
639
639
  };
640
- return (index.h("div", { key: 'be3a46d2a17522799374eb7e59faea8960e7b41a', class: "sd-select-listbox", style: cssVars }, this.showSearch && (index.h("sd-select-list-item-search", { key: '68fa6b9f958ee662ac400716ade0ae4823ad99a3', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), index.h("div", { key: 'b0a6daf94c69ccb33d31434014c93b2f414309f3', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
640
+ return (index.h("div", { key: '4173255a866459bf0aeb98d517263d12f1c39fa5', class: "sd-select-listbox", style: cssVars }, this.showSearch && (index.h("sd-select-list-item-search", { key: '79e7d48d7234ebfd32d3cd242822dfa93a73c151', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), index.h("div", { key: '22981c1e049d0d526af06bb5b563de5130c14477', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
641
641
  this.listEl = el;
642
- } }, this.showSelectAll && (index.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 ? (index.h("div", { class: "sd-select-listbox__empty" }, sdSelect_config.EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (index.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) })))))));
642
+ } }, this.showSelectAll && (index.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 ? (index.h("div", { class: "sd-select-listbox__empty" }, sdSelect_config.EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (index.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) })))))));
643
643
  }
644
644
  static get watchers() { return {
645
645
  "searchKeyword": [{
@@ -683,7 +683,7 @@ const SdSelectTrigger = class {
683
683
  this.triggerBlur.emit();
684
684
  };
685
685
  render() {
686
- const hasValue = !!this.displayText;
686
+ const hasValue = this.displayText !== '';
687
687
  const cssVars = {
688
688
  '--trigger-padding-x': `${sdSelect_config.SELECT_LAYOUT.paddingX}px`,
689
689
  '--trigger-gap': `${sdSelect_config.SELECT_LAYOUT.gap}px`,
@@ -699,13 +699,18 @@ const SdSelectTrigger = class {
699
699
  ? sdSelect_config.SELECT_COLORS.icon.disabled
700
700
  : sdSelect_config.SELECT_COLORS.icon.default,
701
701
  };
702
- return (index.h("div", { key: '69a87c509e16605feb217f12ce055e0097f09a6f', ref: el => {
702
+ return (index.h("div", { key: '6694f35a396f368d5df9860db30d817beddb8bec', ref: el => {
703
703
  this.triggerEl = el;
704
- }, tabindex: this.disabled ? -1 : 0, class: {
704
+ }, role: "button", "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', tabindex: this.disabled ? -1 : 0, class: {
705
705
  'sd-select-trigger': true,
706
706
  'sd-select-trigger--open': this.isOpen,
707
707
  'sd-select-trigger--disabled': this.disabled,
708
- }, style: cssVars, onClick: this.handleClick, onFocus: this.handleFocus, onBlur: this.handleBlur }, index.h("div", { key: '0886f40b2427fc4b5825b06682531a26be4c4eec', class: "sd-select-trigger__content" }, index.h("span", { key: '9e2fb73a34153b0744fbf2cc7490ecdc7a125233', class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택')), index.h("sd-icon", { key: 'c8a80bf912c50bf97a5d5af4d4c5307e416aea6d', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
708
+ }, style: cssVars, onClick: this.handleClick, onKeyDown: e => {
709
+ if (e.key === 'Enter' || e.key === ' ') {
710
+ e.preventDefault();
711
+ this.handleClick();
712
+ }
713
+ }, onFocus: this.handleFocus, onBlur: this.handleBlur }, index.h("div", { key: 'd8ff247ca362a8fc3677d9803261343a1e891298', class: "sd-select-trigger__content" }, index.h("span", { key: 'cd81a7c7c135372aad80fa9391b160337632643c', class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택')), index.h("sd-icon", { key: '838c12e2a9ce06036eee766ffd2f88f3215b8420', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
709
714
  'sd-select-trigger__icon': true,
710
715
  'sd-select-trigger__icon--open': this.isOpen,
711
716
  } }))));
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BlxrCRYi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
 
5
5
  var switchTokens = {
6
6
  "switch": {
@@ -102,7 +102,7 @@ const SdSwitch = class {
102
102
  '--sd-switch-line-height': `${SWITCH_TYPOGRAPHY.lineHeight}px`,
103
103
  '--sd-switch-text-decoration': SWITCH_TYPOGRAPHY.textDecoration,
104
104
  };
105
- return (index.h("label", { key: 'a37c1387905456007de46a6050616b025ad06b37', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, index.h("input", { key: '5fcc9f72e177956e015e4cb009936edc60c4c3ec', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), index.h("div", { key: 'bf1fa22a94b2b245a2ddf805df4cd1c204524710', class: "sd-switch__track" }, index.h("div", { key: '11dafcd812c560acb7a63f7267f40f8ed67da95b', class: "sd-switch__knob" })), this.label && index.h("span", { key: '6609d2e33e82e843ffd5bbb2d2010de3e299f081', class: "sd-switch__label" }, this.label)));
105
+ return (index.h("label", { key: 'ebb195a1bb93ae476b4bf3e697623809d626eed6', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, index.h("input", { key: 'a6de6298d35c54ad83dc6285b90e67c8d3564d15', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), index.h("div", { key: '7881f46be572edcfc82888564a7f85ad4207dd8e', class: "sd-switch__track" }, index.h("div", { key: 'c08c9d5894a6f9ddf3ecdaaa9253628478479043', class: "sd-switch__knob" })), this.label && index.h("span", { key: '4e01b185502829d8fb647d3eafaaf6565489b2f3', class: "sd-switch__label" }, this.label)));
106
106
  }
107
107
  };
108
108
  SdSwitch.style = sdSwitchCss();
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BlxrCRYi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
  var constants = require('./constants-DJRV1upE.js');
5
- var sdTable_config = require('./sd-table.config-CDyioyE2.js');
6
- require('./component.table-B7brIpIQ.js');
5
+ var sdTable_config = require('./sd-table.config-BIpldZtw.js');
6
+ require('./component.table-CMqGfEui.js');
7
7
  require('./system-VmZRYp6V.js');
8
8
 
9
9
  let urlAlphabet =
@@ -19,7 +19,7 @@ let nanoid = (size = 21) => {
19
19
  return id
20
20
  };
21
21
 
22
- const sdTableCss = () => `sd-table,:host{display:block;width:100%;max-width:100%;min-width:0}sd-table *,:host *{box-sizing:border-box}.sd-table__container{height:var(--table-height, 100%);width:var(--table-width, 100%);max-width:100%;min-width:0;color:#222222;display:flex;flex-direction:column}.sd-table__wrapper{width:100%;min-width:0;height:var(--table-container-height, 400px);border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-radius:var(--table-radius, 8px);overflow:hidden}.sd-table__wrapper--radius-use-top{border-radius:0 0 var(--table-radius, 8px) var(--table-radius, 8px)}.sd-table__scroll-container{width:100%;height:100%;display:flex;flex-direction:column;position:relative;font-family:var(--table-body-font-family, inherit);font-weight:var(--table-body-font-weight, 400);font-size:var(--table-body-font-size, 12px);line-height:var(--table-body-line-height, 20px);text-decoration:var(--table-body-text-decoration, none);overflow:auto;background:#FFFFFF}.sd-table__scroll-container--loading{overflow:hidden !important;pointer-events:none}.sd-table__scroll-container--no-data{overflow:hidden;pointer-events:none}.sd-table__no-data{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--table-body-font-size, 12px);color:#888888;pointer-events:none;z-index:200;background:rgba(255, 255, 255, 0.6)}.sd-table__no-data ::slotted(*),.sd-table__no-data span{pointer-events:auto}.sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:none}.sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table--selectable sd-thead,.sd-table--selectable sd-tbody{--selectable:true}.sd-table--sticky-header sd-thead thead{position:sticky;top:0;z-index:120}.sd-table--sticky-column sd-thead,.sd-table--sticky-column sd-tbody{--sticky-column:true}.sd-table--scrolled-left sd-thead,.sd-table--scrolled-left sd-tbody{--scrolled-left:true}.sd-table--scrolled-right sd-thead,.sd-table--scrolled-right sd-tbody{--scrolled-right:true}.sd-table--resizable sd-thead{--resizable:true}.sd-table--no-data sd-thead{opacity:0.4}.sd-table__pagination{position:relative;background:#F9F9F9;height:48px;display:flex;align-items:center;justify-content:center;border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);margin-top:-1px;border-radius:var(--table-radius, 8px)}.sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}`;
22
+ const sdTableCss = () => `sd-table,:host{display:block;width:100%;max-width:100%;min-width:0}sd-table *,:host *{box-sizing:border-box}.sd-table__container{height:var(--table-height, 100%);width:var(--table-width, 100%);max-width:100%;min-width:0;color:#222222;display:flex;flex-direction:column}.sd-table__wrapper{width:100%;min-width:0;height:var(--table-container-height, 400px);border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-radius:var(--table-radius, 8px);overflow:hidden}.sd-table__wrapper--radius-use-top{border-radius:0 0 var(--table-radius, 8px) var(--table-radius, 8px)}.sd-table__scroll-container{width:100%;height:100%;display:flex;flex-direction:column;position:relative;font-family:var(--table-body-font-family, inherit);font-weight:var(--table-body-font-weight, 400);font-size:var(--table-body-font-size, 12px);line-height:var(--table-body-line-height, 20px);text-decoration:var(--table-body-text-decoration, none);overflow:auto;background:#FFFFFF}.sd-table__scroll-container--loading{overflow:hidden !important;pointer-events:none}.sd-table__scroll-container--no-data{overflow:hidden;pointer-events:none}.sd-table__no-data{position:absolute;top:36px;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:var(--table-body-font-size, 12px);color:#888888;pointer-events:none;z-index:200;background:rgba(255, 255, 255, 0.6)}.sd-table__no-data-header-overlay{position:absolute;top:0;left:0;right:0;height:36px;background:rgba(255, 255, 255, 0.6);z-index:210;pointer-events:none}.sd-table__no-data-content{pointer-events:auto;min-height:60px;width:100%;display:flex;align-items:center;justify-content:center}.sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:none}.sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table--selectable sd-thead,.sd-table--selectable sd-tbody{--selectable:true}.sd-table--sticky-header sd-thead thead{position:sticky;top:0;z-index:120}.sd-table--sticky-column sd-thead,.sd-table--sticky-column sd-tbody{--sticky-column:true}.sd-table--scrolled-left sd-thead,.sd-table--scrolled-left sd-tbody{--scrolled-left:true}.sd-table--scrolled-right sd-thead,.sd-table--scrolled-right sd-tbody{--scrolled-right:true}.sd-table--resizable sd-thead{--resizable:true}.sd-table--no-data sd-thead{opacity:0.4}.sd-table__pagination{position:relative;background:#F9F9F9;height:48px;display:flex;align-items:center;justify-content:center;border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);margin-top:-1px;border-radius:var(--table-radius, 8px)}.sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}`;
23
23
 
24
24
  const SdTable = class {
25
25
  constructor(hostRef) {
@@ -51,9 +51,15 @@ const SdTable = class {
51
51
  pagination;
52
52
  useInternalPagination = false;
53
53
  useRowsPerPageSelect = false;
54
+ dense = false;
54
55
  // ─── Virtual Scroll ───────────────────────────────────────────────
55
56
  useVirtualScroll = false;
56
- rowHeight = 40;
57
+ rowHeight;
58
+ get effectiveRowHeight() {
59
+ if (this.rowHeight != null)
60
+ return this.rowHeight;
61
+ return this.dense ? Number(sdTable_config.TABLE_BODY_LAYOUT.dense.height) : Number(sdTable_config.TABLE_BODY_LAYOUT.default.height);
62
+ }
57
63
  virtualBuffer = 5;
58
64
  virtualEndThreshold = 10;
59
65
  // ─────────────────────────────────────────────────────────────────
@@ -76,6 +82,7 @@ const SdTable = class {
76
82
  scrolledRight = false;
77
83
  rowCount = 0;
78
84
  loadingScrollTop = 0;
85
+ noDataBodyHeight = 60;
79
86
  // light DOM에 sd-thead / sd-tbody 자식이 없으면 sd-table이 직접 렌더해야 함을 알리는 플래그.
80
87
  // componentWillLoad에서 한 번 결정되며, 이후 동적 토글은 지원하지 않는다.
81
88
  autoThead = false;
@@ -84,12 +91,19 @@ const SdTable = class {
84
91
  vsEnd = 0;
85
92
  lastReachEndNotifiedRowCount = -1;
86
93
  scrollContainer = null;
94
+ noDataContentEl = null;
95
+ noDataContentResizeObserver;
87
96
  onScroll;
88
97
  // 키: `${rowKey}::${field}` → { rowspan, colspan }
89
98
  spanRegistry = new Map();
99
+ // rowKey → Set<field>: useFrame=true인 sd-td가 있는 행을 추적한다.
100
+ // 하나라도 등록되면 해당 행은 dense를 무시하고 default 레이아웃으로 렌더된다.
101
+ useFrameRegistry = new Map();
90
102
  // 키: `${rowKey}::${field}` → sd-td의 sdClass 문자열
91
103
  // sd-tr가 td를 그릴 때 머지해서 셀-단위 커스텀 클래스를 적용한다.
92
104
  cellClassRegistry = new Map();
105
+ // separator 직전 행의 시각적 인덱스 집합
106
+ separatorPrevIndices = new Set();
93
107
  // rowKey 문자열 → rows 배열에서의 visual index.
94
108
  // rowspan 위쪽 행 스캔에서 "내 위에 있느냐"를 판정하기 위한 시각적 순서 소스.
95
109
  // rows prop이 있으면 채워지고, 없으면 비어 있어 Number(rowKey) fallback이 사용된다.
@@ -148,6 +162,7 @@ const SdTable = class {
148
162
  if (newVal) {
149
163
  this.loadingScrollTop = this.scrollContainer?.scrollTop ?? 0;
150
164
  }
165
+ this.syncNoDataContentObserver();
151
166
  }
152
167
  handleUseVirtualScrollChange(newVal) {
153
168
  if (newVal) {
@@ -156,7 +171,7 @@ const SdTable = class {
156
171
  }
157
172
  }
158
173
  handleColumnsChange(newCols) {
159
- this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
174
+ this.columnWidths = newCols.map(c => (c.autoWidth ? 0 : parseInt(c.width || '120', 10)));
160
175
  this.refreshChildrenConfig();
161
176
  }
162
177
  handleRowsChange(newRows) {
@@ -167,6 +182,7 @@ const SdTable = class {
167
182
  if (this.useVirtualScroll)
168
183
  this.propagateVirtualUpdate(true);
169
184
  this.pushRowsToChildren(newRows);
185
+ this.syncNoDataContentObserver();
170
186
  }
171
187
  handleRowKeyChange() {
172
188
  this.rebuildRowIndexMap();
@@ -192,10 +208,10 @@ const SdTable = class {
192
208
  this.innerSelected = new Set(newSelected);
193
209
  }
194
210
  handlePaginationChange(newVal) {
195
- if (newVal?.page && newVal.page !== this.currentPage) {
211
+ if (newVal?.page != null && newVal.page !== this.currentPage) {
196
212
  this.currentPage = newVal.page;
197
213
  }
198
- if (newVal?.rowsPerPage && newVal.rowsPerPage !== this.innerRowsPerPage) {
214
+ if (newVal?.rowsPerPage != null && newVal.rowsPerPage !== this.innerRowsPerPage) {
199
215
  this.innerRowsPerPage = newVal.rowsPerPage;
200
216
  }
201
217
  }
@@ -210,12 +226,12 @@ const SdTable = class {
210
226
  this.handleNoDataLabelChange(this.noDataLabel);
211
227
  this.detectChildren();
212
228
  this.innerSelected = new Set(this.selected || []);
213
- this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
229
+ this.columnWidths = (this.columns || []).map(c => c.autoWidth ? 0 : parseInt(c.width || '120', 10));
214
230
  this.rebuildRowIndexMap();
215
- if (this.pagination?.page) {
231
+ if (this.pagination?.page != null) {
216
232
  this.currentPage = this.pagination.page;
217
233
  }
218
- if (this.pagination?.rowsPerPage) {
234
+ if (this.pagination?.rowsPerPage != null) {
219
235
  this.innerRowsPerPage = this.pagination.rowsPerPage;
220
236
  }
221
237
  const el = this.el;
@@ -237,10 +253,16 @@ const SdTable = class {
237
253
  el.getSpanSync = this.getSpanSync.bind(this);
238
254
  el.isCoveredSync = this.isCoveredSync.bind(this);
239
255
  el.isVisualLastRowSync = this.isVisualLastRowSync.bind(this);
256
+ el.registerSeparatorSync = this.registerSeparatorSync.bind(this);
257
+ el.unregisterSeparatorSync = this.unregisterSeparatorSync.bind(this);
258
+ el.isVisualLastRowBeforeSeparatorSync = this.isVisualLastRowBeforeSeparatorSync.bind(this);
240
259
  el.hasRowspanSync = this.hasRowspanSync.bind(this);
241
260
  el.registerCellClassSync = this.registerCellClassSync.bind(this);
242
261
  el.unregisterCellClassSync = this.unregisterCellClassSync.bind(this);
243
262
  el.getCellClassSync = this.getCellClassSync.bind(this);
263
+ el.registerUseFrameSync = this.registerUseFrameSync.bind(this);
264
+ el.unregisterUseFrameSync = this.unregisterUseFrameSync.bind(this);
265
+ el.hasUseFrameInRowSync = this.hasUseFrameInRowSync.bind(this);
244
266
  if (Array.isArray(this.rows)) {
245
267
  this.rowCount = this.rows.length;
246
268
  this.pushRowsToChildren(this.rows);
@@ -283,11 +305,43 @@ const SdTable = class {
283
305
  this.propagateVirtualUpdate(); // 초기 렌더
284
306
  }
285
307
  });
308
+ this.syncNoDataContentObserver();
286
309
  }
287
310
  disconnectedCallback() {
288
311
  if (this.scrollContainer && this.onScroll) {
289
312
  this.scrollContainer.removeEventListener('scroll', this.onScroll);
290
313
  }
314
+ this.noDataContentResizeObserver?.disconnect();
315
+ this.noDataContentResizeObserver = undefined;
316
+ }
317
+ syncNoDataContentObserver() {
318
+ const isNoData = this.rowCount === 0 && !this.isLoading;
319
+ if (!isNoData) {
320
+ this.noDataContentResizeObserver?.disconnect();
321
+ this.noDataContentResizeObserver = undefined;
322
+ this.noDataBodyHeight = 60;
323
+ return;
324
+ }
325
+ this.observeNoDataContentHeight();
326
+ }
327
+ // observer를 붙이고 콘텐츠 높이를 측정해 noDataBodyHeight를 갱신하는 함수
328
+ observeNoDataContentHeight() {
329
+ if (typeof ResizeObserver === 'undefined')
330
+ return;
331
+ const target = this.noDataContentEl;
332
+ if (!target)
333
+ return;
334
+ this.noDataContentResizeObserver?.disconnect();
335
+ this.noDataContentResizeObserver = new ResizeObserver(() => {
336
+ const measured = Math.ceil(target.scrollHeight);
337
+ const nextHeight = Math.max(60, measured);
338
+ if (nextHeight !== this.noDataBodyHeight) {
339
+ this.noDataBodyHeight = nextHeight;
340
+ }
341
+ });
342
+ this.noDataContentResizeObserver.observe(target);
343
+ const measured = Math.ceil(target.scrollHeight);
344
+ this.noDataBodyHeight = Math.max(60, measured);
291
345
  }
292
346
  // light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
293
347
  queryChildEl(selector) {
@@ -352,8 +406,8 @@ const SdTable = class {
352
406
  return;
353
407
  this.vsStart = start;
354
408
  this.vsEnd = end;
355
- const topHeight = start * this.rowHeight;
356
- const bottomHeight = Math.max(0, (this.rowCount - end) * this.rowHeight);
409
+ const topHeight = start * this.effectiveRowHeight;
410
+ const bottomHeight = Math.max(0, (this.rowCount - end) * this.effectiveRowHeight);
357
411
  const tbody = this.queryChildEl('sd-tbody');
358
412
  tbody?.setSpacersSync?.(topHeight, bottomHeight);
359
413
  if (rangeChanged) {
@@ -367,7 +421,7 @@ const SdTable = class {
367
421
  getVirtualScrollConfigSync() {
368
422
  return {
369
423
  useVirtualScroll: this.useVirtualScroll,
370
- rowHeight: this.rowHeight,
424
+ rowHeight: this.effectiveRowHeight,
371
425
  virtualBuffer: this.virtualBuffer,
372
426
  vsStart: this.vsStart,
373
427
  vsEnd: this.vsEnd,
@@ -384,10 +438,35 @@ const SdTable = class {
384
438
  scrolledLeft: this.scrolledLeft,
385
439
  scrolledRight: this.scrolledRight,
386
440
  columnWidths: this.columnWidths,
441
+ dense: this.dense,
387
442
  };
388
443
  }
444
+ registerUseFrameSync(rowKey, field) {
445
+ if (rowKey == null || field === '')
446
+ return;
447
+ let fields = this.useFrameRegistry.get(rowKey);
448
+ if (!fields) {
449
+ fields = new Set();
450
+ this.useFrameRegistry.set(rowKey, fields);
451
+ }
452
+ fields.add(field);
453
+ }
454
+ unregisterUseFrameSync(rowKey, field) {
455
+ if (rowKey == null || field === '')
456
+ return;
457
+ const fields = this.useFrameRegistry.get(rowKey);
458
+ if (!fields)
459
+ return;
460
+ fields.delete(field);
461
+ if (fields.size === 0)
462
+ this.useFrameRegistry.delete(rowKey);
463
+ }
464
+ hasUseFrameInRowSync(rowKey) {
465
+ const fields = this.useFrameRegistry.get(rowKey);
466
+ return fields != null && fields.size > 0;
467
+ }
389
468
  isRowSelectedSync(row) {
390
- return Array.from(this.innerSelected).some(r => r[(this.rowKey ?? 'id')] === row[(this.rowKey ?? 'id')]);
469
+ return Array.from(this.innerSelected).some(r => r[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id']);
391
470
  }
392
471
  async isRowSelected(row) {
393
472
  return this.isRowSelectedSync(row);
@@ -396,7 +475,7 @@ const SdTable = class {
396
475
  const selectedArray = Array.from(this.innerSelected);
397
476
  const exists = this.isRowSelectedSync(row);
398
477
  const newSelected = exists
399
- ? selectedArray.filter(r => r[(this.rowKey ?? 'id')] !== row[(this.rowKey ?? 'id')])
478
+ ? selectedArray.filter(r => r[this.rowKey ?? 'id'] !== row[this.rowKey ?? 'id'])
400
479
  : [...selectedArray, row];
401
480
  if (newSelected.length === selectedArray.length)
402
481
  return;
@@ -414,8 +493,8 @@ const SdTable = class {
414
493
  this.innerSelected = new Set([...this.innerSelected, ...pageRows]);
415
494
  }
416
495
  else {
417
- const currentPageKeys = rows.map(r => r[(this.rowKey ?? 'id')]);
418
- this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[(this.rowKey ?? 'id')])));
496
+ const currentPageKeys = rows.map(r => r[this.rowKey ?? 'id']);
497
+ this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey ?? 'id'])));
419
498
  }
420
499
  this.selected = Array.from(this.innerSelected);
421
500
  this.sdSelectChange.emit(Array.from(this.innerSelected));
@@ -426,7 +505,7 @@ const SdTable = class {
426
505
  }
427
506
  getIsAllCheckedSync(rows) {
428
507
  const total = rows.length;
429
- const selectedCount = rows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[(this.rowKey ?? 'id')] === row[(this.rowKey ?? 'id')])).length;
508
+ const selectedCount = rows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id'])).length;
430
509
  if (selectedCount === 0)
431
510
  return false;
432
511
  if (selectedCount === total)
@@ -449,7 +528,7 @@ const SdTable = class {
449
528
  this.queryAllTr().forEach(tr => tr?.updateVisibility?.());
450
529
  }
451
530
  changeRowsPerPage(perPage) {
452
- const changedRowsPerPage = perPage ? Number(perPage) : 0;
531
+ const changedRowsPerPage = perPage != null && perPage !== '' ? Number(perPage) : 0;
453
532
  if (!this.useInternalPagination) {
454
533
  this.sdRowsPerPageChange.emit(changedRowsPerPage);
455
534
  return;
@@ -476,7 +555,7 @@ const SdTable = class {
476
555
  const startWidth = this.columnWidths[index];
477
556
  const handleMouseMove = (moveEvent) => {
478
557
  const col = this.columns[index];
479
- if (!col)
558
+ if (col == null)
480
559
  return;
481
560
  const minWidth = col.minWidth || 50;
482
561
  const maxWidth = col.maxWidth || 9999;
@@ -511,13 +590,17 @@ const SdTable = class {
511
590
  this.columns.filter(c => c.visible !== false).length -
512
591
  (this.stickyColumn?.right || 0) && i > colIdx)
513
592
  .reduce((a, b) => a + b, 0);
514
- return {
593
+ const visibleCol = this.columns.filter(c => c.visible !== false)[colIdx];
594
+ const base = {
515
595
  '--sticky-left-offset': `${leftOffset}px`,
516
596
  '--sticky-right-offset': `${rightOffset}px`,
517
- 'width': `${this.columnWidths[colIdx]}px`,
518
- 'minWidth': `${this.columnWidths[colIdx]}px`,
519
- 'maxWidth': `${this.columnWidths[colIdx]}px`,
520
597
  };
598
+ if (!visibleCol?.autoWidth) {
599
+ base['width'] = `${this.columnWidths[colIdx]}px`;
600
+ base['minWidth'] = `${this.columnWidths[colIdx]}px`;
601
+ base['maxWidth'] = `${this.columnWidths[colIdx]}px`;
602
+ }
603
+ return base;
521
604
  }
522
605
  async getStickyStyle(colIdx) {
523
606
  return this.getStickyStyleSync(colIdx);
@@ -546,7 +629,7 @@ const SdTable = class {
546
629
  });
547
630
  }
548
631
  registerSpanSync(rowKey, field, rowspan, colspan) {
549
- if (rowKey == null || !field)
632
+ if (rowKey == null || field === '')
550
633
  return;
551
634
  const safeRowspan = Math.max(1, Math.floor(rowspan || 1));
552
635
  const safeColspan = Math.max(1, Math.floor(colspan || 1));
@@ -565,7 +648,7 @@ const SdTable = class {
565
648
  this.requestAllTrUpdate();
566
649
  }
567
650
  unregisterSpanSync(rowKey, field) {
568
- if (rowKey == null || !field)
651
+ if (rowKey == null || field === '')
569
652
  return;
570
653
  const key = this.spanKey(rowKey, field);
571
654
  if (!this.spanRegistry.has(key))
@@ -580,18 +663,18 @@ const SdTable = class {
580
663
  // span과 달리 다른 셀에 영향이 없으므로 형제 sd-tr 전체를 재렌더하지 않고,
581
664
  // sd-td 쪽에서 자기 부모 tr만 bumpSpansVersion으로 새로 그린다.
582
665
  registerCellClassSync(rowKey, field, cls) {
583
- if (rowKey == null || !field)
666
+ if (rowKey == null || field === '')
584
667
  return;
585
668
  const key = this.spanKey(rowKey, field);
586
669
  const safe = (cls ?? '').trim();
587
- if (!safe) {
670
+ if (safe === '') {
588
671
  this.cellClassRegistry.delete(key);
589
672
  return;
590
673
  }
591
674
  this.cellClassRegistry.set(key, safe);
592
675
  }
593
676
  unregisterCellClassSync(rowKey, field) {
594
- if (rowKey == null || !field)
677
+ if (rowKey == null || field === '')
595
678
  return;
596
679
  this.cellClassRegistry.delete(this.spanKey(rowKey, field));
597
680
  }
@@ -614,7 +697,7 @@ const SdTable = class {
614
697
  // 1. 같은 행 왼쪽 스캔 — colspan으로 이 위치를 덮는 셀이 있는가
615
698
  for (let i = 0; i < colIdx; i++) {
616
699
  const c = visibleCols[i];
617
- if (!c)
700
+ if (c == null)
618
701
  continue;
619
702
  const field = typeof c.field === 'string' ? c.field : c.name;
620
703
  const span = this.spanRegistry.get(this.spanKey(rowKey, field));
@@ -652,23 +735,50 @@ const SdTable = class {
652
735
  }
653
736
  return false;
654
737
  }
655
- // 셀이 시각적으로 마지막 행(또는 페이지 마지막 )에 닿는지 판정.
656
- // 마지막 행에 border-bottom: none을 적용하기 위함
657
- isVisualLastRowSync(rowKey, field) {
658
- if (this.rowCount <= 0)
659
- return false;
738
+ // rowspan을 반영한 셀의 시각적 하단인덱스를 반환한다.
739
+ // isVisualLastRowSync·isVisualLastRowBeforeSeparatorSync 공통 헬퍼.
740
+ resolveVisualBottom(rowKey, field) {
660
741
  const myRowIdx = this.resolveRowIndex(rowKey);
661
742
  if (myRowIdx == null)
662
- return false;
743
+ return null;
663
744
  const span = this.spanRegistry.get(this.spanKey(rowKey, field));
664
745
  const rs = Math.max(1, span?.rowspan ?? 1);
665
- const visualBottom = myRowIdx + rs - 1;
746
+ return myRowIdx + rs - 1;
747
+ }
748
+ // 셀의 시각적 하단이 테이블(또는 현재 페이지)의 마지막 행인지 판정.
749
+ // 마지막 행에 border-bottom: none을 적용하기 위함.
750
+ isVisualLastRowSync(rowKey, field) {
751
+ if (this.rowCount <= 0)
752
+ return false;
753
+ const visualBottom = this.resolveVisualBottom(rowKey, field);
754
+ if (visualBottom == null)
755
+ return false;
666
756
  const pageInfo = this.getPaginationInfoSync();
667
757
  const lastVisibleIdx = pageInfo
668
758
  ? Math.min(pageInfo.endIndex - 1, this.rowCount - 1)
669
759
  : this.rowCount - 1;
670
760
  return visualBottom === lastVisibleIdx;
671
761
  }
762
+ registerSeparatorSync(prevRowKey) {
763
+ const idx = this.resolveRowIndex(prevRowKey);
764
+ if (idx != null)
765
+ this.separatorPrevIndices.add(idx);
766
+ }
767
+ unregisterSeparatorSync(prevRowKey) {
768
+ const idx = this.resolveRowIndex(prevRowKey);
769
+ if (idx != null)
770
+ this.separatorPrevIndices.delete(idx);
771
+ }
772
+ // 셀의 시각적 하단이 separator 바로 앞 행인지 판정.
773
+ // 해당 셀에 border-bottom: none을 적용하기 위함.
774
+ isVisualLastRowBeforeSeparatorSync(rowKey, field) {
775
+ if (this.separatorPrevIndices.size === 0)
776
+ return false;
777
+ const visualBottom = this.resolveVisualBottom(rowKey, field);
778
+ if (visualBottom == null)
779
+ return false;
780
+ return this.separatorPrevIndices.has(visualBottom);
781
+ }
672
782
  setRowCountSync(count) {
673
783
  const safeCount = Math.max(0, Math.floor(this.toFiniteNumber(count, 0)));
674
784
  if (safeCount !== this.rowCount) {
@@ -683,7 +793,7 @@ const SdTable = class {
683
793
  this.setRowCountSync(count);
684
794
  }
685
795
  calculateVisibleRange(scrollTop, containerHeight) {
686
- const safeRowHeight = Math.max(1, this.toFiniteNumber(this.rowHeight, 40));
796
+ const safeRowHeight = Math.max(1, this.toFiniteNumber(this.effectiveRowHeight, 40));
687
797
  const safeBuffer = Math.max(0, Math.floor(this.toFiniteNumber(this.virtualBuffer, 5)));
688
798
  const safeScrollTop = Math.max(0, this.toFiniteNumber(scrollTop, 0));
689
799
  const safeContainerHeight = Math.max(0, this.toFiniteNumber(containerHeight, 0));
@@ -749,6 +859,12 @@ const SdTable = class {
749
859
  }
750
860
  render() {
751
861
  const resolvedTableId = this.getResolvedTableId();
862
+ const isNoData = this.rowCount === 0 && !this.isLoading;
863
+ const paginationHeight = this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0;
864
+ const noDataTotalHeight = 36 + this.noDataBodyHeight;
865
+ const effectiveTableHeight = isNoData
866
+ ? `max(${this.height || '96px'}, ${noDataTotalHeight}px)`
867
+ : this.height || '100%';
752
868
  const hostStyle = {
753
869
  '--table-radius': `${sdTable_config.TABLE_RADIUS}px`,
754
870
  '--table-border-color': sdTable_config.TABLE_BORDER.color,
@@ -759,21 +875,25 @@ const SdTable = class {
759
875
  '--table-body-line-height': `${sdTable_config.TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
760
876
  '--table-body-text-decoration': sdTable_config.TABLE_BODY_TYPOGRAPHY.textDecoration,
761
877
  };
762
- return (index.h(index.Host, { key: 'd868318e2aeb7b3062a702a743f90bb55dbb00b8', style: hostStyle }, index.h("div", { key: '5b2113ecd1fa52a6170ffcfac5f906fae7ef7548', class: "sd-table__container", style: {
878
+ return (index.h(index.Host, { key: '02d716bdac3832710bf58d63741aeeb4b04d434b', style: hostStyle }, index.h("div", { key: '88faad346e032ca727375889aa0552a330f5799a', class: "sd-table__container", style: {
763
879
  '--table-width': this.width,
764
- '--table-height': this.height,
765
- '--table-container-height': `calc(${this.height || '100%'} - ${this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0}px)`,
766
- } }, index.h("div", { key: '389d7f3508727fb76d9d9f98a73963c5556ff993', class: {
880
+ '--table-height': effectiveTableHeight,
881
+ '--table-container-height': `calc(${effectiveTableHeight} - ${paginationHeight}px)`,
882
+ } }, index.h("div", { key: '783934f349e0da5bab77cbb44cc12f0dfeb9ec71', class: {
767
883
  'sd-table__wrapper': true,
768
884
  'sd-table__wrapper--radius-use-top': this.radius === 'useTop',
769
- } }, index.h("div", { key: 'e9cdeecb5f318cb1af4e0d2e938e0098e1cc44d0', class: {
885
+ } }, index.h("div", { key: 'd3a76ad0e853c6adf16df633c0e0b7f5bb580f24', class: {
770
886
  'sd-table__scroll-container': true,
771
887
  'sd-table__scroll-container--loading': this.isLoading,
772
- 'sd-table__scroll-container--no-data': this.rowCount === 0 && !this.isLoading,
773
- } }, this.isLoading && (index.h("div", { key: '40caec779763f90e1f48818e3f56e8daabc105a6', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, index.h("sd-circle-progress", { key: 'bf7a3cabb0023f0a1663dd0337f3399ace0e75e7', indeterminate: true }))), this.rowCount === 0 && !this.isLoading && (index.h("div", { key: 'aac583c7876171a276645146e00afbc43d405607', class: "sd-table__no-data" }, index.h("slot", { key: '31e18789beeed03bcfd7013c9386eefd6f51b2cd', name: "no-data" }, index.h("span", { key: '07da091864e588f2ee60e8ea5ffd5ae34c968f68' }, this.resolvedNoDataLabel)))), index.h("table", { key: '69284f7f819477072450d1b6acbfe081abe4f1ef', class: this.tableClasses }, this.autoThead ? (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-thead", { rows: this.rows ?? [] }))) : (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
888
+ 'sd-table__scroll-container--no-data': isNoData,
889
+ } }, this.isLoading && (index.h("div", { key: 'cc77ce58ff0eebf3fc1d7dd9dbf11578f94d4dd1', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, index.h("sd-circle-progress", { key: 'bda7ed774342089a23d13b49a506b04527026275', indeterminate: true }))), isNoData && (index.h(index.h.Fragment, null, index.h("div", { key: 'f2ce89d0ae9eefe0f0f8509e477756cb74dbef86', class: "sd-table__no-data-header-overlay" }), index.h("div", { key: '84d739563123d0f0fc33166b1a6e80021ba06e1c', class: "sd-table__no-data" }, index.h("div", { key: '3507f718a25b79c44fdf283fb41356ab72f2a384', class: "sd-table__no-data-content", ref: el => {
890
+ this.noDataContentEl = el;
891
+ if (el)
892
+ this.syncNoDataContentObserver();
893
+ } }, index.h("slot", { key: '818129819b2ff4a6f9fc1224dc59a9aa5861296d', name: "no-data" }, index.h("span", { key: 'c03cfb713e6dadd5ab4c60d7d27fd502d7aa9348' }, this.resolvedNoDataLabel)))))), index.h("table", { key: '8864714a828069985bac6535bc40cbb043dfcb28', class: this.tableClasses }, this.autoThead ? (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-thead", { rows: this.rows ?? [] }))) : (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
774
894
  this.pagination.rowsPerPage > 0 &&
775
895
  this.rowCount > 0 &&
776
- !this.useVirtualScroll && (index.h("div", { key: 'ff30e864526aa8c3fac2cc37499cea7aa6be1420', class: "sd-table__pagination" }, index.h("sd-pagination", { key: 'ad5badf1d5f518b0bf281e973c46b1381e82ae3c', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (index.h("sd-select", { key: 'd249e79cfda4c80cb4df9c353dc4f678a5ccb861', value: this.useInternalPagination
896
+ !this.useVirtualScroll && (index.h("div", { key: 'bdac4b4d551152ec7ee0cdc31bfb992748836928', class: "sd-table__pagination" }, index.h("sd-pagination", { key: '2c60fff7f8ac3a3bd22da2173b8a9187bb686ddf', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (index.h("sd-select", { key: '7a662f58e13c15e705341773570f899f503f12c0', value: this.useInternalPagination
777
897
  ? this.innerRowsPerPage
778
898
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
779
899
  if (!this.isRowsPerPageValue(e.detail))
@@ -815,6 +935,9 @@ const SdTable = class {
815
935
  "stickyHeader": [{
816
936
  "handleConfigChange": 0
817
937
  }],
938
+ "dense": [{
939
+ "handleConfigChange": 0
940
+ }],
818
941
  "selected": [{
819
942
  "handleSelectedChange": 0
820
943
  }],