@sellmate/design-system 1.3.0 → 1.4.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 (60) hide show
  1. package/dist/cjs/{component.table-CMqGfEui.js → component.table-qOFez3z3.js} +3 -0
  2. package/dist/cjs/design-system.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/sd-calendar_2.cjs.entry.js +6 -5
  5. package/dist/cjs/sd-key-value-table.cjs.entry.js +1 -1
  6. package/dist/cjs/sd-pagination_4.cjs.entry.js +19 -28
  7. package/dist/cjs/sd-table.cjs.entry.js +25 -27
  8. package/dist/cjs/{sd-table.config-BIpldZtw.js → sd-table.config-B7psrvV4.js} +4 -2
  9. package/dist/cjs/sd-td.cjs.entry.js +18 -9
  10. package/dist/collection/components/sd-calendar/sd-calendar.css +2 -0
  11. package/dist/collection/components/sd-calendar/sd-calendar.js +5 -4
  12. package/dist/collection/components/sd-table/sd-table.js +24 -26
  13. package/dist/collection/components/sd-table/sd-td/sd-td.js +18 -9
  14. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +6 -2
  15. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +16 -25
  16. package/dist/components/{p-BkWaPXXj.js → p-BDVrZ5mV.js} +1 -1
  17. package/dist/components/p-CETxX4-M.js +1 -0
  18. package/dist/components/p-DQFHAKL_.js +1 -0
  19. package/dist/components/p-DiP0LJGq.js +1 -0
  20. package/dist/components/{p-CPuyhF6g.js → p-DwgaMhOM.js} +1 -1
  21. package/dist/components/p-DykVq5VY.js +1 -0
  22. package/dist/components/sd-calendar.js +1 -1
  23. package/dist/components/sd-date-picker.js +1 -1
  24. package/dist/components/sd-key-value-table.js +1 -1
  25. package/dist/components/sd-table.js +1 -1
  26. package/dist/components/sd-td.js +1 -1
  27. package/dist/components/sd-thead.js +1 -1
  28. package/dist/components/sd-tr.js +1 -1
  29. package/dist/design-system/design-system.esm.js +1 -1
  30. package/dist/design-system/p-29fd86d8.entry.js +1 -0
  31. package/dist/design-system/p-36d744fb.entry.js +1 -0
  32. package/dist/design-system/{p-fe0a5368.entry.js → p-42f7febe.entry.js} +1 -1
  33. package/dist/design-system/p-522d1481.entry.js +1 -0
  34. package/dist/design-system/p-DQFHAKL_.js +1 -0
  35. package/dist/design-system/p-DykVq5VY.js +1 -0
  36. package/dist/design-system/{p-00854a0a.entry.js → p-d890a680.entry.js} +1 -1
  37. package/dist/esm/{component.table-BnfUIhUj.js → component.table-DQFHAKL_.js} +3 -0
  38. package/dist/esm/design-system.js +1 -1
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/esm/sd-calendar_2.entry.js +6 -5
  41. package/dist/esm/sd-key-value-table.entry.js +1 -1
  42. package/dist/esm/sd-pagination_4.entry.js +19 -28
  43. package/dist/esm/{sd-table.config-B-VgXXT7.js → sd-table.config-DU7Pc6YH.js} +4 -2
  44. package/dist/esm/sd-table.entry.js +25 -27
  45. package/dist/esm/sd-td.entry.js +18 -9
  46. package/dist/types/components/sd-table/sd-table.d.ts +1 -1
  47. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +2 -2
  48. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +1 -2
  49. package/hydrate/index.js +70 -66
  50. package/hydrate/index.mjs +70 -66
  51. package/package.json +1 -1
  52. package/dist/components/p-B8o25hOw.js +0 -1
  53. package/dist/components/p-BnfUIhUj.js +0 -1
  54. package/dist/components/p-WAsath62.js +0 -1
  55. package/dist/components/p-mmdt-WnS.js +0 -1
  56. package/dist/design-system/p-563b6fc2.entry.js +0 -1
  57. package/dist/design-system/p-BnfUIhUj.js +0 -1
  58. package/dist/design-system/p-f721a6c6.entry.js +0 -1
  59. package/dist/design-system/p-ffaa4b5d.entry.js +0 -1
  60. package/dist/design-system/p-mmdt-WnS.js +0 -1
@@ -39,9 +39,8 @@ export declare class SdTr {
39
39
  private getSpanFor;
40
40
  private isCovered;
41
41
  private getCellClassFor;
42
+ private getFramePaddingStyle;
42
43
  private expandCellClass;
43
- private isVisualLastRow;
44
- private isVisualLastRowForSelfRow;
45
44
  private isVisualLastRowBeforeSeparator;
46
45
  private isVisualLastRowBeforeSeparatorForSelfRow;
47
46
  render(): any;
package/hydrate/index.js CHANGED
@@ -6718,7 +6718,7 @@ const CALENDAR_LAYOUT = {
6718
6718
  };
6719
6719
  const WEEK_LABELS = ['일', '월', '화', '수', '목', '금', '토'];
6720
6720
 
6721
- const sdCalendarCss = () => `sd-calendar{display:block}sd-calendar .sd-calendar{display:flex;flex-direction:column;gap:var(--calendar-gap);width:328px;min-height:328px;padding:var(--calendar-padding);background:var(--calendar-bg);border-radius:var(--calendar-radius);box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.2);user-select:none}sd-calendar .sd-calendar__header{display:flex;align-items:center;justify-content:center;gap:var(--calendar-header-gap);font-size:var(--calendar-header-font-size);line-height:var(--calendar-header-line-height);font-weight:var(--calendar-header-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__nav-group{display:inline-flex;align-items:center;gap:var(--calendar-gap)}sd-calendar .sd-calendar__nav-group-month{width:100%}sd-calendar .sd-calendar__label{display:inline-flex;align-items:center;justify-content:center;min-width:40px;text-align:center}sd-calendar .sd-calendar__label-month{width:100%}sd-calendar .sd-calendar__divider{display:inline-block;width:1px;height:16px;background:var(--calendar-header-divider)}sd-calendar .sd-calendar__week{display:grid;grid-template-columns:repeat(7, var(--calendar-day-size))}sd-calendar .sd-calendar__week-cell{display:inline-flex;align-items:center;justify-content:center;height:20px;font-size:var(--calendar-week-font-size);line-height:var(--calendar-week-line-height);font-weight:var(--calendar-week-font-weight);color:var(--calendar-week-color)}sd-calendar .sd-calendar__grid{display:grid;grid-template-columns:repeat(7, var(--calendar-day-size));row-gap:var(--calendar-grid-row-gap)}sd-calendar .sd-calendar__day{display:inline-flex;flex-direction:column;align-items:center;justify-content:flex-start;width:var(--calendar-day-size);min-height:var(--calendar-day-circle-size);padding:0;border:none;background:transparent;cursor:pointer;font-size:var(--calendar-day-font-size);line-height:var(--calendar-day-line-height);font-weight:var(--calendar-day-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__day-circle{display:inline-flex;align-items:center;justify-content:center;width:var(--calendar-day-circle-size);height:var(--calendar-day-circle-size);border-radius:calc(var(--calendar-day-circle-radius) * 1px);border:1px solid transparent;box-sizing:border-box}sd-calendar .sd-calendar__day:not(:disabled):hover .sd-calendar__day-circle{border-radius:16px;border:1px solid var(--calendar-day-hover-border)}sd-calendar .sd-calendar__day--today .sd-calendar__day-circle{font-weight:700}sd-calendar .sd-calendar__day--selected .sd-calendar__day-circle{border-radius:16px;background:var(--calendar-day-select-bg);color:var(--calendar-day-select-text)}sd-calendar .sd-calendar__day--selected:not(:disabled):hover .sd-calendar__day-circle{background:var(--calendar-day-select-bg);color:var(--calendar-day-select-text)}sd-calendar .sd-calendar__day--disabled{color:var(--calendar-day-disabled-text);background:none !important;cursor:not-allowed}sd-calendar .sd-calendar__day--empty{visibility:hidden;pointer-events:none}sd-calendar .sd-calendar__dot-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--calendar-day-dot-gap);width:100%;padding-top:var(--calendar-day-dot-padding-y);padding-bottom:var(--calendar-day-dot-padding-y)}sd-calendar .sd-calendar__dot{display:inline-block;width:var(--calendar-day-dot-size);height:var(--calendar-day-dot-size);border-radius:50%}sd-calendar .sd-calendar__divider-bottom{display:block;width:100%;height:1px;background:var(--calendar-header-divider)}sd-calendar .sd-calendar__legend{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;column-gap:var(--calendar-legend-group-gap);row-gap:4px;font-size:var(--calendar-legend-font-size);line-height:var(--calendar-legend-line-height);font-weight:var(--calendar-legend-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__legend-item{display:inline-flex;align-items:center;gap:var(--calendar-legend-gap)}sd-calendar .sd-calendar__legend-dot{display:inline-block;width:var(--calendar-day-dot-size);height:var(--calendar-day-dot-size);border-radius:50%;flex-shrink:0}sd-calendar .sd-calendar__legend-label{display:inline-block}`;
6721
+ const sdCalendarCss = () => `sd-calendar{display:block}sd-calendar .sd-calendar{display:flex;flex-direction:column;gap:var(--calendar-gap);width:328px;min-height:328px;padding:var(--calendar-padding);background:var(--calendar-bg);border-radius:var(--calendar-radius);box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.2);user-select:none}sd-calendar .sd-calendar__header{display:flex;align-items:center;justify-content:center;gap:var(--calendar-header-gap);font-size:var(--calendar-header-font-size);line-height:var(--calendar-header-line-height);font-weight:var(--calendar-header-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__nav-group{display:inline-flex;align-items:center;gap:var(--calendar-gap)}sd-calendar .sd-calendar__nav-group-month{width:100%}sd-calendar .sd-calendar__label{display:inline-flex;align-items:center;justify-content:center;min-width:40px;text-align:center}sd-calendar .sd-calendar__label-month{width:100%}sd-calendar .sd-calendar__divider{display:inline-block;width:1px;height:16px;background:var(--calendar-header-divider)}sd-calendar .sd-calendar__week{display:grid;grid-template-columns:repeat(7, var(--calendar-day-size))}sd-calendar .sd-calendar__week-cell{display:inline-flex;align-items:center;justify-content:center;height:20px;font-size:var(--calendar-week-font-size);line-height:var(--calendar-week-line-height);font-weight:var(--calendar-week-font-weight);color:var(--calendar-week-color)}sd-calendar .sd-calendar__grid{display:grid;grid-template-columns:repeat(7, var(--calendar-day-size));row-gap:var(--calendar-grid-row-gap)}sd-calendar .sd-calendar__day{display:inline-flex;flex-direction:column;align-items:center;justify-content:flex-start;width:var(--calendar-day-size);min-height:var(--calendar-day-circle-size);padding:0;border:none;background:transparent;cursor:pointer;font-size:var(--calendar-day-font-size);line-height:var(--calendar-day-line-height);font-weight:var(--calendar-day-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__day-circle{display:inline-flex;align-items:center;justify-content:center;width:var(--calendar-day-circle-size);height:var(--calendar-day-circle-size);border-radius:calc(var(--calendar-day-circle-radius) * 1px);border:1px solid transparent;box-sizing:border-box}sd-calendar .sd-calendar__day:not(:disabled):hover .sd-calendar__day-circle{border-radius:16px;border:1px solid var(--calendar-day-hover-border)}sd-calendar .sd-calendar__day--today .sd-calendar__day-circle{font-weight:700}sd-calendar .sd-calendar__day--selected .sd-calendar__day-circle{border-radius:16px;background:var(--calendar-day-select-bg);color:var(--calendar-day-select-text)}sd-calendar .sd-calendar__day--selected:not(:disabled):hover .sd-calendar__day-circle{background:var(--calendar-day-select-bg);color:var(--calendar-day-select-text)}sd-calendar .sd-calendar__day--disabled{color:var(--calendar-day-disabled-text);background:none !important;cursor:not-allowed}sd-calendar .sd-calendar__day--empty{visibility:hidden;pointer-events:none}sd-calendar .sd-calendar__dot-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--calendar-day-dot-gap);box-sizing:border-box;width:100%;min-height:14px;padding-top:var(--calendar-day-dot-padding-y);padding-bottom:var(--calendar-day-dot-padding-y)}sd-calendar .sd-calendar__dot{display:inline-block;width:var(--calendar-day-dot-size);height:var(--calendar-day-dot-size);border-radius:50%}sd-calendar .sd-calendar__divider-bottom{display:block;width:100%;height:1px;background:var(--calendar-header-divider)}sd-calendar .sd-calendar__legend{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;column-gap:var(--calendar-legend-group-gap);row-gap:4px;font-size:var(--calendar-legend-font-size);line-height:var(--calendar-legend-line-height);font-weight:var(--calendar-legend-font-weight);color:var(--calendar-day-text)}sd-calendar .sd-calendar__legend-item{display:inline-flex;align-items:center;gap:var(--calendar-legend-gap)}sd-calendar .sd-calendar__legend-dot{display:inline-block;width:var(--calendar-day-dot-size);height:var(--calendar-day-dot-size);border-radius:50%;flex-shrink:0}sd-calendar .sd-calendar__legend-label{display:inline-block}`;
6722
6722
 
6723
6723
  class SdCalendar {
6724
6724
  constructor(hostRef) {
@@ -6894,7 +6894,8 @@ class SdCalendar {
6894
6894
  };
6895
6895
  const eventMap = this.eventMap;
6896
6896
  const legend = this.legendItems;
6897
- return (hAsync("div", { key: '66c0bec57c13af12b05f2e90fbc5e1674ab052c8', class: "sd-calendar", style: cssVars }, hAsync("div", { key: '4df4f1c6d1ddcbe1478a69a481a228e66fc33c0a', class: "sd-calendar__header" }, hAsync("div", { key: '378c04444b3ddcc7df92ecce0f49056e919cd8e5', class: "sd-calendar__nav-group" }, hAsync("sd-ghost-button", { key: '47426c62a26b05a9db58144acc33770713e7fce4', ariaLabel: "prevYear", size: "xxs", icon: "chevronLeft", onClick: this.goPrevYear }), hAsync("span", { key: '3b32e76a8a35705d820803c0b747829370079324', class: "sd-calendar__label" }, this.currentYear), hAsync("sd-ghost-button", { key: '2e890a2cea91c9f49a03f0db3a4b943c707e312e', ariaLabel: "nextYear", size: "xxs", icon: "chevronRight", onClick: this.goNextYear })), hAsync("span", { key: '795bb8452e75303c25a8dc6d95f819f1e42f7f49', class: "sd-calendar__divider", "aria-hidden": "true" }), hAsync("div", { key: '6df460ec38917c51eff851732c7f37b7e09475f6', class: "sd-calendar__nav-group sd-calendar__nav-group-month" }, hAsync("sd-ghost-button", { key: '36ef9dfdcfac5d9da08d05ca357fc9ec4100af4f', ariaLabel: "prevMonth", size: "xxs", icon: "chevronLeft", onClick: this.goPrevMonth }), hAsync("span", { key: 'b2e0cc74570724c0d97fb2afbcb775c0794583af', class: "sd-calendar__label sd-calendar__label-month" }, this.currentMonth, "\uC6D4"), hAsync("sd-ghost-button", { key: '4c45467356411f7a5d137c19931d8fc62084c742', ariaLabel: "nextMonth", size: "xxs", icon: "chevronRight", onClick: this.goNextMonth }))), hAsync("div", { key: 'e1637a39795fb44bd33d138c8b244cc15b5f85f6', class: "sd-calendar__week" }, WEEK_LABELS.map(label => (hAsync("span", { key: label, class: "sd-calendar__week-cell" }, label)))), hAsync("div", { key: '45642dc93b1373dc760f64ba74dd931e651279dd', class: "sd-calendar__grid" }, this.cells.map(cell => {
6897
+ const hasEvents = (this.events?.length ?? 0) > 0;
6898
+ return (hAsync("div", { key: '79cfdb58f8d44085c87cfea6458e60654bfa09bb', class: "sd-calendar", style: cssVars }, hAsync("div", { key: '065620bcd155de11ef2272720de57ef6fcd9fd20', class: "sd-calendar__header" }, hAsync("div", { key: 'ae27c8fe51c44137932b18cc83b64dcce7e2bbaa', class: "sd-calendar__nav-group" }, hAsync("sd-ghost-button", { key: '8207f6d77705999419f451db032c059564ea0c17', ariaLabel: "prevYear", size: "xxs", icon: "chevronLeft", onClick: this.goPrevYear }), hAsync("span", { key: 'b5bf63784dd06c3ce5a4d4c5514fea22efb08793', class: "sd-calendar__label" }, this.currentYear), hAsync("sd-ghost-button", { key: '14512de68825e3b158704c3084306029ade8fcc1', ariaLabel: "nextYear", size: "xxs", icon: "chevronRight", onClick: this.goNextYear })), hAsync("span", { key: 'e37eb90d72c2e64b8ebb1da4ddf3fccb7ff18cc3', class: "sd-calendar__divider", "aria-hidden": "true" }), hAsync("div", { key: '07b1696b663ddb992e5a8d8b5ab98205ba136d9d', class: "sd-calendar__nav-group sd-calendar__nav-group-month" }, hAsync("sd-ghost-button", { key: 'b742889a44643d3e4d3b6da90784923c40e5a07f', ariaLabel: "prevMonth", size: "xxs", icon: "chevronLeft", onClick: this.goPrevMonth }), hAsync("span", { key: 'c97402106312c3a6eb220798263ba818419e7d27', class: "sd-calendar__label sd-calendar__label-month" }, this.currentMonth, "\uC6D4"), hAsync("sd-ghost-button", { key: '55411b1328acb781d71a7a84996d2a29886612cd', ariaLabel: "nextMonth", size: "xxs", icon: "chevronRight", onClick: this.goNextMonth }))), hAsync("div", { key: 'd10b03d31be412b545999d7e70bd9a349e5f1880', class: "sd-calendar__week" }, WEEK_LABELS.map(label => (hAsync("span", { key: label, class: "sd-calendar__week-cell" }, label)))), hAsync("div", { key: '0b8f82db3753fe08435b07dee695d49a192786c0', class: "sd-calendar__grid" }, this.cells.map(cell => {
6898
6899
  const isSelected = cell.inCurrentMonth && this.value !== '' && this.value === cell.date;
6899
6900
  const isToday = cell.inCurrentMonth && today === cell.date;
6900
6901
  const isDisabled = cell.inCurrentMonth && this.isDisabled(cell.date);
@@ -6905,10 +6906,10 @@ class SdCalendar {
6905
6906
  'sd-calendar__day--today': isToday,
6906
6907
  'sd-calendar__day--selected': isSelected,
6907
6908
  'sd-calendar__day--disabled': isDisabled,
6908
- }, disabled: !cell.inCurrentMonth || isDisabled, tabindex: !cell.inCurrentMonth ? -1 : undefined, "aria-hidden": !cell.inCurrentMonth ? 'true' : undefined, onClick: () => cell.inCurrentMonth && this.handleDayClick(cell) }, hAsync("span", { class: "sd-calendar__day-circle" }, cell.inCurrentMonth ? cell.day : ''), dayEvents && dayEvents.length > 0 && (hAsync("span", { class: "sd-calendar__dot-row", "aria-hidden": "true" }, dayEvents.map((ev, i) => (hAsync("span", { key: `${ev.color}|${ev.label}|${i}`, class: "sd-calendar__dot", style: { backgroundColor: ev.color } })))))));
6909
+ }, disabled: !cell.inCurrentMonth || isDisabled, tabindex: !cell.inCurrentMonth ? -1 : undefined, "aria-hidden": !cell.inCurrentMonth ? 'true' : undefined, onClick: () => cell.inCurrentMonth && this.handleDayClick(cell) }, hAsync("span", { class: "sd-calendar__day-circle" }, cell.inCurrentMonth ? cell.day : ''), hasEvents && (hAsync("span", { class: "sd-calendar__dot-row", "aria-hidden": "true" }, dayEvents?.map((ev, i) => (hAsync("span", { key: `${ev.color}|${ev.label}|${i}`, class: "sd-calendar__dot", style: { backgroundColor: ev.color } })))))));
6909
6910
  })), legend.length > 0 && [
6910
- hAsync("span", { key: '0872cb7627db7d33721fbd1e1c9a601bd3c6c3e1', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
6911
- hAsync("div", { key: 'd9c6be0684720aa9d2af24b2d0cf372a036dc8d5', class: "sd-calendar__legend" }, legend.map(item => (hAsync("span", { key: `${item.color}|${item.label}`, class: "sd-calendar__legend-item" }, hAsync("span", { class: "sd-calendar__legend-dot", style: { backgroundColor: item.color }, "aria-hidden": "true" }), hAsync("span", { class: "sd-calendar__legend-label" }, item.label))))),
6911
+ hAsync("span", { key: 'a837c5956da658561fcbd2e646b0abbb0fa84a20', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
6912
+ hAsync("div", { key: '190b9947e5ecd627fad03b40c58c2e0c8719daaa', class: "sd-calendar__legend" }, legend.map(item => (hAsync("span", { key: `${item.color}|${item.label}`, class: "sd-calendar__legend-item" }, hAsync("span", { class: "sd-calendar__legend-dot", style: { backgroundColor: item.color }, "aria-hidden": "true" }), hAsync("span", { class: "sd-calendar__legend-label" }, item.label))))),
6912
6913
  ]));
6913
6914
  }
6914
6915
  static get watchers() { return {
@@ -10711,6 +10712,9 @@ const table = {
10711
10712
  paddingY: "6"
10712
10713
  },
10713
10714
  paddingX: "16",
10715
+ frame: {
10716
+ padding: "8"
10717
+ },
10714
10718
  typography: {
10715
10719
  fontFamily: "Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",
10716
10720
  fontWeight: "400",
@@ -14364,7 +14368,9 @@ const TABLE_BODY_LAYOUT = {
14364
14368
  height: tableTokens.table.body.dense.height,
14365
14369
  paddingY: tableTokens.table.body.dense.paddingY,
14366
14370
  },
14367
- paddingX: tableTokens.table.body.paddingX};
14371
+ paddingX: tableTokens.table.body.paddingX,
14372
+ framePadding: tableTokens.table.body.frame.padding,
14373
+ };
14368
14374
  const TABLE_BODY_TYPOGRAPHY = {
14369
14375
  fontFamily: tableTokens.table.body.typography.fontFamily,
14370
14376
  fontWeight: tableTokens.table.body.typography.fontWeight,
@@ -14433,7 +14439,9 @@ class SdTable {
14433
14439
  get effectiveRowHeight() {
14434
14440
  if (this.rowHeight != null)
14435
14441
  return this.rowHeight;
14436
- return this.dense ? Number(TABLE_BODY_LAYOUT.dense.height) : Number(TABLE_BODY_LAYOUT.default.height);
14442
+ return this.dense
14443
+ ? Number(TABLE_BODY_LAYOUT.dense.height)
14444
+ : Number(TABLE_BODY_LAYOUT.default.height);
14437
14445
  }
14438
14446
  virtualBuffer = 5;
14439
14447
  virtualEndThreshold = 10;
@@ -14627,7 +14635,6 @@ class SdTable {
14627
14635
  el.unregisterSpanSync = this.unregisterSpanSync.bind(this);
14628
14636
  el.getSpanSync = this.getSpanSync.bind(this);
14629
14637
  el.isCoveredSync = this.isCoveredSync.bind(this);
14630
- el.isVisualLastRowSync = this.isVisualLastRowSync.bind(this);
14631
14638
  el.registerSeparatorSync = this.registerSeparatorSync.bind(this);
14632
14639
  el.unregisterSeparatorSync = this.unregisterSeparatorSync.bind(this);
14633
14640
  el.isVisualLastRowBeforeSeparatorSync = this.isVisualLastRowBeforeSeparatorSync.bind(this);
@@ -14638,6 +14645,7 @@ class SdTable {
14638
14645
  el.registerUseFrameSync = this.registerUseFrameSync.bind(this);
14639
14646
  el.unregisterUseFrameSync = this.unregisterUseFrameSync.bind(this);
14640
14647
  el.hasUseFrameInRowSync = this.hasUseFrameInRowSync.bind(this);
14648
+ el.isCellUseFrameSync = this.isCellUseFrameSync.bind(this);
14641
14649
  if (Array.isArray(this.rows)) {
14642
14650
  this.rowCount = this.rows.length;
14643
14651
  this.pushRowsToChildren(this.rows);
@@ -14715,8 +14723,15 @@ class SdTable {
14715
14723
  }
14716
14724
  });
14717
14725
  this.noDataContentResizeObserver.observe(target);
14718
- const measured = Math.ceil(target.scrollHeight);
14719
- this.noDataBodyHeight = Math.max(60, measured);
14726
+ readTask(() => {
14727
+ if (!this.noDataContentEl)
14728
+ return;
14729
+ const measured = Math.ceil(this.noDataContentEl.scrollHeight);
14730
+ const next = Math.max(60, measured);
14731
+ if (next !== this.noDataBodyHeight) {
14732
+ this.noDataBodyHeight = next;
14733
+ }
14734
+ });
14720
14735
  }
14721
14736
  // light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
14722
14737
  queryChildEl(selector) {
@@ -14840,6 +14855,9 @@ class SdTable {
14840
14855
  const fields = this.useFrameRegistry.get(rowKey);
14841
14856
  return fields != null && fields.size > 0;
14842
14857
  }
14858
+ isCellUseFrameSync(rowKey, field) {
14859
+ return this.useFrameRegistry.get(rowKey)?.has(field) ?? false;
14860
+ }
14843
14861
  isRowSelectedSync(row) {
14844
14862
  return Array.from(this.innerSelected).some(r => r[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id']);
14845
14863
  }
@@ -15108,7 +15126,7 @@ class SdTable {
15108
15126
  return false;
15109
15127
  }
15110
15128
  // rowspan을 반영한 셀의 시각적 하단 행 인덱스를 반환한다.
15111
- // isVisualLastRowSync·isVisualLastRowBeforeSeparatorSync 공통 헬퍼.
15129
+ // isVisualLastRowBeforeSeparatorSync 헬퍼.
15112
15130
  resolveVisualBottom(rowKey, field) {
15113
15131
  const myRowIdx = this.resolveRowIndex(rowKey);
15114
15132
  if (myRowIdx == null)
@@ -15117,20 +15135,6 @@ class SdTable {
15117
15135
  const rs = Math.max(1, span?.rowspan ?? 1);
15118
15136
  return myRowIdx + rs - 1;
15119
15137
  }
15120
- // 셀의 시각적 하단이 테이블(또는 현재 페이지)의 마지막 행인지 판정.
15121
- // 마지막 행에 border-bottom: none을 적용하기 위함.
15122
- isVisualLastRowSync(rowKey, field) {
15123
- if (this.rowCount <= 0)
15124
- return false;
15125
- const visualBottom = this.resolveVisualBottom(rowKey, field);
15126
- if (visualBottom == null)
15127
- return false;
15128
- const pageInfo = this.getPaginationInfoSync();
15129
- const lastVisibleIdx = pageInfo
15130
- ? Math.min(pageInfo.endIndex - 1, this.rowCount - 1)
15131
- : this.rowCount - 1;
15132
- return visualBottom === lastVisibleIdx;
15133
- }
15134
15138
  registerSeparatorSync(prevRowKey) {
15135
15139
  const idx = this.resolveRowIndex(prevRowKey);
15136
15140
  if (idx != null)
@@ -15247,25 +15251,25 @@ class SdTable {
15247
15251
  '--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
15248
15252
  '--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
15249
15253
  };
15250
- return (hAsync(Host, { key: '02d716bdac3832710bf58d63741aeeb4b04d434b', style: hostStyle }, hAsync("div", { key: '88faad346e032ca727375889aa0552a330f5799a', class: "sd-table__container", style: {
15254
+ return (hAsync(Host, { key: '2b7c1eaf862c45c73751af6035a022e8ce0314b4', style: hostStyle }, hAsync("div", { key: '35851e539eef8ff69ff03bd31f5d55d95eb8bf7a', class: "sd-table__container", style: {
15251
15255
  '--table-width': this.width,
15252
15256
  '--table-height': effectiveTableHeight,
15253
15257
  '--table-container-height': `calc(${effectiveTableHeight} - ${paginationHeight}px)`,
15254
- } }, hAsync("div", { key: '783934f349e0da5bab77cbb44cc12f0dfeb9ec71', class: {
15258
+ } }, hAsync("div", { key: 'e3bf5576fd1b1ee9ffab5d240de904204f4288d5', class: {
15255
15259
  'sd-table__wrapper': true,
15256
15260
  'sd-table__wrapper--radius-use-top': this.radius === 'useTop',
15257
- } }, hAsync("div", { key: 'd3a76ad0e853c6adf16df633c0e0b7f5bb580f24', class: {
15261
+ } }, hAsync("div", { key: 'a67ebcb802a3ed443cca1fc33a00787642e08e84', class: {
15258
15262
  'sd-table__scroll-container': true,
15259
15263
  'sd-table__scroll-container--loading': this.isLoading,
15260
15264
  'sd-table__scroll-container--no-data': isNoData,
15261
- } }, this.isLoading && (hAsync("div", { key: 'cc77ce58ff0eebf3fc1d7dd9dbf11578f94d4dd1', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, hAsync("sd-circle-progress", { key: 'bda7ed774342089a23d13b49a506b04527026275', indeterminate: true }))), isNoData && (hAsync(hAsync.Fragment, null, hAsync("div", { key: 'f2ce89d0ae9eefe0f0f8509e477756cb74dbef86', class: "sd-table__no-data-header-overlay" }), hAsync("div", { key: '84d739563123d0f0fc33166b1a6e80021ba06e1c', class: "sd-table__no-data" }, hAsync("div", { key: '3507f718a25b79c44fdf283fb41356ab72f2a384', class: "sd-table__no-data-content", ref: el => {
15265
+ } }, this.isLoading && (hAsync("div", { key: '2cdaff94dab50598c05364930dd3e763a6f2f79a', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, hAsync("sd-circle-progress", { key: '49211d7555a38996d3fd9cfce0df50bb626fa1d6', indeterminate: true }))), isNoData && (hAsync(hAsync.Fragment, null, hAsync("div", { key: '3da9d42ecedbdc63858a06040f0e22d265a8183b', class: "sd-table__no-data-header-overlay" }), hAsync("div", { key: '20b5d8be682572a4ddbce21b6cd265894d014499', class: "sd-table__no-data" }, hAsync("div", { key: 'a024fa084f4a137a70fe176cee6918b4f701fd42', class: "sd-table__no-data-content", ref: el => {
15262
15266
  this.noDataContentEl = el;
15263
15267
  if (el)
15264
15268
  this.syncNoDataContentObserver();
15265
- } }, hAsync("slot", { key: '818129819b2ff4a6f9fc1224dc59a9aa5861296d', name: "no-data" }, hAsync("span", { key: 'c03cfb713e6dadd5ab4c60d7d27fd502d7aa9348' }, this.resolvedNoDataLabel)))))), hAsync("table", { key: '8864714a828069985bac6535bc40cbb043dfcb28', class: this.tableClasses }, this.autoThead ? (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-thead", { rows: this.rows ?? [] }))) : (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
15269
+ } }, hAsync("slot", { key: '9603eefa63fd5bc05dfa132c6be2302497d4c228', name: "no-data" }, hAsync("span", { key: '0dad4e143d8251e375f748d1e5e1a77909fab164' }, this.resolvedNoDataLabel)))))), hAsync("table", { key: '83325a8970f18bb9cf7a78dc665d16a24edc18da', class: this.tableClasses }, this.autoThead ? (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-thead", { rows: this.rows ?? [] }))) : (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
15266
15270
  this.pagination.rowsPerPage > 0 &&
15267
15271
  this.rowCount > 0 &&
15268
- !this.useVirtualScroll && (hAsync("div", { key: 'bdac4b4d551152ec7ee0cdc31bfb992748836928', class: "sd-table__pagination" }, hAsync("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 && (hAsync("sd-select", { key: '7a662f58e13c15e705341773570f899f503f12c0', value: this.useInternalPagination
15272
+ !this.useVirtualScroll && (hAsync("div", { key: '935b0f916cbc1de29a7f6b3805a5a3c25eaba467', class: "sd-table__pagination" }, hAsync("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 && (hAsync("sd-select", { key: 'd514c41459a60ac47ffcd476a635c47386232c50', value: this.useInternalPagination
15269
15273
  ? this.innerRowsPerPage
15270
15274
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
15271
15275
  if (!this.isRowsPerPageValue(e.detail))
@@ -15922,11 +15926,13 @@ class SdTd {
15922
15926
  this.syncSlotName();
15923
15927
  this.syncSpanRegistration();
15924
15928
  this.syncCellClassRegistration(oldField);
15929
+ this.syncUseFrameRegistration(oldField);
15925
15930
  }
15926
15931
  handleRowKeyChange(_newKey, oldKey) {
15927
15932
  this.syncSlotName();
15928
15933
  this.syncSpanRegistration();
15929
15934
  this.syncCellClassRegistration(undefined, oldKey);
15935
+ this.syncUseFrameRegistration(undefined, oldKey);
15930
15936
  }
15931
15937
  handleSpanChange() {
15932
15938
  this.syncSpanRegistration();
@@ -15937,15 +15943,15 @@ class SdTd {
15937
15943
  handleDividerChange() {
15938
15944
  this.syncCellClassRegistration();
15939
15945
  }
15940
- handleUseFieldChange() {
15941
- this.syncUseFieldRegistration();
15946
+ handleUseFrameChange() {
15947
+ this.syncUseFrameRegistration();
15942
15948
  this.requestParentTrUpdate();
15943
15949
  }
15944
15950
  componentWillLoad() {
15945
15951
  this.syncSlotName();
15946
15952
  this.syncSpanRegistration();
15947
15953
  this.syncCellClassRegistration();
15948
- this.syncUseFieldRegistration();
15954
+ this.syncUseFrameRegistration();
15949
15955
  // slot 타이밍 엇갈림 대응: 부모 sd-tr forceUpdate로 슬롯 재매칭
15950
15956
  const parentTr = this.el.parentElement;
15951
15957
  if (parentTr?.tagName?.toLowerCase() === 'sd-tr') ;
@@ -15954,7 +15960,7 @@ class SdTd {
15954
15960
  this.syncSlotName();
15955
15961
  this.syncSpanRegistration();
15956
15962
  this.syncCellClassRegistration();
15957
- this.syncUseFieldRegistration();
15963
+ this.syncUseFrameRegistration();
15958
15964
  }
15959
15965
  // React StrictMode에서는 disconnect/reconnect 사이클이 일어나면서
15960
15966
  // 동일 인스턴스의 componentWillLoad는 더 이상 호출되지 않는다.
@@ -15962,7 +15968,7 @@ class SdTd {
15962
15968
  connectedCallback() {
15963
15969
  this.syncSpanRegistration();
15964
15970
  this.syncCellClassRegistration();
15965
- this.syncUseFieldRegistration();
15971
+ this.syncUseFrameRegistration();
15966
15972
  }
15967
15973
  disconnectedCallback() {
15968
15974
  const table = this.findTable();
@@ -16016,9 +16022,16 @@ class SdTd {
16016
16022
  table.registerCellClassSync(String(this.rowKey), this.field, combinedClass);
16017
16023
  this.requestParentTrUpdate();
16018
16024
  }
16019
- syncUseFieldRegistration() {
16025
+ syncUseFrameRegistration(prevField, prevRowKey) {
16020
16026
  const table = this.findTable();
16021
- if (!table || this.field === '' || this.rowKey == null)
16027
+ if (!table)
16028
+ return;
16029
+ const oldField = prevField ?? this.field;
16030
+ const oldRowKey = prevRowKey ?? (this.rowKey != null ? String(this.rowKey) : undefined);
16031
+ if (oldField !== '' && oldRowKey != null) {
16032
+ table.unregisterUseFrameSync?.(oldRowKey, oldField);
16033
+ }
16034
+ if (this.field === '' || this.rowKey == null)
16022
16035
  return;
16023
16036
  if (this.useFrame) {
16024
16037
  table.registerUseFrameSync?.(String(this.rowKey), this.field);
@@ -16039,7 +16052,7 @@ class SdTd {
16039
16052
  }
16040
16053
  }
16041
16054
  render() {
16042
- return (hAsync(Host, { key: '7d51ea5f02ba2df099f4440be26c2f0be8a73a6b', class: { [`align-${this.align}`]: Boolean(this.align) } }, hAsync("slot", { key: '9a6a634e2bcd206ec9099c6be738c3853d0cbebf' })));
16055
+ return (hAsync(Host, { key: '505b602b609050870e7e80df9157dbc50d0cb8c1', class: { [`align-${this.align}`]: Boolean(this.align) } }, hAsync("slot", { key: '9910f02d98ce5e115b2a380954dd0a994f9f1c12' })));
16043
16056
  }
16044
16057
  static get watchers() { return {
16045
16058
  "field": [{
@@ -16064,7 +16077,7 @@ class SdTd {
16064
16077
  "handleDividerChange": 0
16065
16078
  }],
16066
16079
  "useFrame": [{
16067
- "handleUseFieldChange": 0
16080
+ "handleUseFrameChange": 0
16068
16081
  }]
16069
16082
  }; }
16070
16083
  static get style() { return sdTdCss(); }
@@ -17281,7 +17294,7 @@ class SdTooltip {
17281
17294
  }; }
17282
17295
  }
17283
17296
 
17284
- const sdTrCss = () => `sd-tr{display:contents}sd-tr *{box-sizing:border-box}.tr{display:table-row}.tr:hover .td{background-color:#F9F9F9}.tr--no-hover:hover .td{background-color:white}.td{display:table-cell;height:var(--table-body-height, 44px);padding:var(--table-body-padding-y, 0) var(--table-body-padding-x, 16px);border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);background:white;vertical-align:middle;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.td--left{text-align:left}.td--center{text-align:center}.td--right{text-align:right}.td--selected{position:relative;width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.td--selected sd-checkbox label{position:relative}.td--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.td.sticky-left{position:sticky;background-color:white;z-index:100 !important;left:var(--sticky-left-offset, 0)}.td.sticky-right{position:sticky;background-color:white;z-index:100 !important;right:var(--sticky-right-offset, 0)}.td.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-left-edge.is-scrolled-left{overflow:visible}.td.sticky-left-edge.is-scrolled-left:after{opacity:1}.td.sticky-right-edge.is-scrolled-right{overflow:visible}.td.sticky-right-edge.is-scrolled-right:after{opacity:1}.tr:hover .td.sticky-left,.tr:hover .td.sticky-right{background-color:#F9F9F9}.tr--no-hover:hover .td.sticky-left,.tr--no-hover:hover .td.sticky-right{background-color:white}.td.td--last-row{border-bottom:none}.tr--separator .td--separator{height:var(--table-separator-width, 6px);padding:0;background-color:var(--table-separator-color, #eeeeee);border-bottom:none}.td.td--before-separator{border-bottom:none}.td--divider-left{border-left:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1)}.td--divider-right{border-right:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1)}`;
17297
+ const sdTrCss = () => `sd-tr{display:contents}sd-tr *{box-sizing:border-box}.tr{display:table-row}.tr:hover .td{background-color:#F9F9F9}.tr--no-hover:hover .td{background-color:white}.tr--separator:hover .td{background-color:var(--table-separator-color, #eeeeee)}.td{display:table-cell;height:var(--table-body-height, 44px);padding:var(--table-body-padding-y, 0) var(--table-body-padding-x, 16px);border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);background:white;vertical-align:middle;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.td--left{text-align:left}.td--center{text-align:center}.td--right{text-align:right}.td--selected{position:relative;width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.td--selected sd-checkbox label{position:relative}.td--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.td.sticky-left{position:sticky;background-color:white;z-index:100 !important;left:var(--sticky-left-offset, 0)}.td.sticky-right{position:sticky;background-color:white;z-index:100 !important;right:var(--sticky-right-offset, 0)}.td.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-left-edge.is-scrolled-left{overflow:visible}.td.sticky-left-edge.is-scrolled-left:after{opacity:1}.td.sticky-right-edge.is-scrolled-right{overflow:visible}.td.sticky-right-edge.is-scrolled-right:after{opacity:1}.tr:hover .td.sticky-left,.tr:hover .td.sticky-right{background-color:#F9F9F9}.tr--no-hover:hover .td.sticky-left,.tr--no-hover:hover .td.sticky-right{background-color:white}.tr--separator:hover .td.sticky-left,.tr--separator:hover .td.sticky-right{background-color:var(--table-separator-color, #eeeeee)}.tr--separator .td--separator{height:var(--table-separator-width, 6px);padding:0;background-color:var(--table-separator-color, #eeeeee);border-bottom:none}.td.td--before-separator{border-bottom:none}.td--divider-left{border-left:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1)}.td--divider-right{border-right:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1)}`;
17285
17298
 
17286
17299
  class SdTr {
17287
17300
  constructor(hostRef) {
@@ -17455,6 +17468,13 @@ class SdTr {
17455
17468
  const fieldName = typeof col.field === 'string' ? col.field : col.name;
17456
17469
  return this.tableEl.getCellClassSync(this.rowKey, fieldName);
17457
17470
  }
17471
+ getFramePaddingStyle(field) {
17472
+ if (!this._dense)
17473
+ return undefined;
17474
+ if (!(this.tableEl?.isCellUseFrameSync?.(this.rowKey, field) ?? false))
17475
+ return undefined;
17476
+ return { padding: `${TABLE_BODY_LAYOUT.framePadding}px` };
17477
+ }
17458
17478
  expandCellClass(classStr) {
17459
17479
  if (classStr == null || classStr === '')
17460
17480
  return {};
@@ -17463,20 +17483,6 @@ class SdTr {
17463
17483
  .filter(Boolean)
17464
17484
  .map(c => [c, true]));
17465
17485
  }
17466
- isVisualLastRow(col) {
17467
- if (!this.tableEl?.isVisualLastRowSync)
17468
- return false;
17469
- const fieldName = typeof col.field === 'string' ? col.field : col.name;
17470
- return this.tableEl.isVisualLastRowSync(this.rowKey, fieldName);
17471
- }
17472
- // selectable td는 column 정보가 없으므로 빈 field로 평가한다.
17473
- // 해당 위치는 rowspan을 등록할 수 없으므로 spanRegistry에 매칭이 없고,
17474
- // 결과적으로 "내 row 자체가 시각적 마지막인지"가 판정된다.
17475
- isVisualLastRowForSelfRow() {
17476
- if (!this.tableEl?.isVisualLastRowSync)
17477
- return false;
17478
- return this.tableEl.isVisualLastRowSync(this.rowKey, '');
17479
- }
17480
17486
  isVisualLastRowBeforeSeparator(col) {
17481
17487
  if (!this.tableEl?.isVisualLastRowBeforeSeparatorSync)
17482
17488
  return false;
@@ -17497,12 +17503,13 @@ class SdTr {
17497
17503
  const hasRowspan = this.tableEl?.hasRowspanSync?.() ?? false;
17498
17504
  const isUseFrameRow = this.tableEl?.hasUseFrameInRowSync?.(this.rowKey) ?? false;
17499
17505
  const effectiveDense = this._dense && !isUseFrameRow;
17500
- const bodyLayout = effectiveDense ? TABLE_BODY_LAYOUT.dense : TABLE_BODY_LAYOUT.default;
17506
+ const rowLayoutY = effectiveDense ? TABLE_BODY_LAYOUT.dense : TABLE_BODY_LAYOUT.default;
17507
+ const rowPaddingX = this._dense && isUseFrameRow ? TABLE_BODY_LAYOUT.paddingX : TABLE_BODY_LAYOUT.paddingX;
17501
17508
  const rowStyle = {
17502
17509
  'display': this.isVisible ? '' : 'none',
17503
- '--table-body-height': `${bodyLayout.height}px`,
17504
- '--table-body-padding-y': `${bodyLayout.paddingY}px`,
17505
- '--table-body-padding-x': `${TABLE_BODY_LAYOUT.paddingX}px`,
17510
+ '--table-body-height': `${rowLayoutY.height}px`,
17511
+ '--table-body-padding-y': `${rowLayoutY.paddingY}px`,
17512
+ '--table-body-padding-x': `${rowPaddingX}px`,
17506
17513
  '--table-body-font-family': TABLE_BODY_TYPOGRAPHY.fontFamily,
17507
17514
  '--table-body-font-weight': TABLE_BODY_TYPOGRAPHY.fontWeight,
17508
17515
  '--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
@@ -17520,7 +17527,6 @@ class SdTr {
17520
17527
  return (hAsync(Host, { style: rowStyle }, hAsync("tr", { class: { 'tr': true, 'tr--no-hover': hasRowspan } }, this._selectable && (hAsync("td", { class: {
17521
17528
  'td': true,
17522
17529
  'td--selected': true,
17523
- 'td--last-row': this.isVisualLastRowForSelfRow(),
17524
17530
  'td--before-separator': this.isVisualLastRowBeforeSeparatorForSelfRow(),
17525
17531
  'sticky-left': true,
17526
17532
  'sticky-left-edge': stickyLeftCount === 0,
@@ -17528,19 +17534,19 @@ class SdTr {
17528
17534
  }, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { value: this.isSelected(), onSdUpdate: () => this.handleSelect() }))), stickyLeftCols.map((col, idx) => {
17529
17535
  if (this.isCovered(idx))
17530
17536
  return null;
17537
+ const fieldName = typeof col.field === 'string' ? col.field : col.name;
17531
17538
  const span = this.getSpanFor(col);
17532
17539
  const sdCellClass = this.getCellClassFor(col);
17533
17540
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17534
17541
  'td': true,
17535
17542
  [`td--${col.align || 'left'}`]: true,
17536
- 'td--last-row': this.isVisualLastRow(col),
17537
17543
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17538
17544
  'sticky-left': true,
17539
17545
  'sticky-left-edge': idx === stickyLeftCount - 1,
17540
17546
  'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
17541
17547
  [`${col.tdClass}`]: Boolean(col.tdClass),
17542
17548
  ...this.expandCellClass(sdCellClass),
17543
- }, style: this.getStickyStyle(idx) }, hAsync("slot", { name: `${this.tableId}-${typeof col.field === 'string' ? col.field : col.name}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17549
+ }, style: { ...this.getStickyStyle(idx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17544
17550
  }), middleCols.map((col, relativeIdx) => {
17545
17551
  const actualColIdx = stickyLeftCount + relativeIdx;
17546
17552
  if (this.isCovered(actualColIdx))
@@ -17551,11 +17557,10 @@ class SdTr {
17551
17557
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17552
17558
  'td': true,
17553
17559
  [`td--${col.align || 'left'}`]: true,
17554
- 'td--last-row': this.isVisualLastRow(col),
17555
17560
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17556
17561
  [`${col.tdClass}`]: Boolean(col.tdClass),
17557
17562
  ...this.expandCellClass(sdCellClass),
17558
- }, style: this.getStickyStyle(actualColIdx) }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17563
+ }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17559
17564
  }), stickyRightCols.map((col, relativeIdx) => {
17560
17565
  const actualColIdx = this.visibleColumns.length - stickyRightCount + relativeIdx;
17561
17566
  if (this.isCovered(actualColIdx))
@@ -17566,14 +17571,13 @@ class SdTr {
17566
17571
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17567
17572
  'td': true,
17568
17573
  [`td--${col.align || 'left'}`]: true,
17569
- 'td--last-row': this.isVisualLastRow(col),
17570
17574
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17571
17575
  'sticky-right': true,
17572
17576
  'sticky-right-edge': relativeIdx === 0,
17573
17577
  'is-scrolled-right': relativeIdx === 0 && this._scrolledRight,
17574
17578
  [`${col.tdClass}`]: Boolean(col.tdClass),
17575
17579
  ...this.expandCellClass(sdCellClass),
17576
- }, style: this.getStickyStyle(actualColIdx) }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17580
+ }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17577
17581
  }))));
17578
17582
  }
17579
17583
  static get style() { return sdTrCss(); }