@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
package/hydrate/index.mjs CHANGED
@@ -6716,7 +6716,7 @@ const CALENDAR_LAYOUT = {
6716
6716
  };
6717
6717
  const WEEK_LABELS = ['일', '월', '화', '수', '목', '금', '토'];
6718
6718
 
6719
- 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}`;
6719
+ 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}`;
6720
6720
 
6721
6721
  class SdCalendar {
6722
6722
  constructor(hostRef) {
@@ -6892,7 +6892,8 @@ class SdCalendar {
6892
6892
  };
6893
6893
  const eventMap = this.eventMap;
6894
6894
  const legend = this.legendItems;
6895
- 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 => {
6895
+ const hasEvents = (this.events?.length ?? 0) > 0;
6896
+ 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 => {
6896
6897
  const isSelected = cell.inCurrentMonth && this.value !== '' && this.value === cell.date;
6897
6898
  const isToday = cell.inCurrentMonth && today === cell.date;
6898
6899
  const isDisabled = cell.inCurrentMonth && this.isDisabled(cell.date);
@@ -6903,10 +6904,10 @@ class SdCalendar {
6903
6904
  'sd-calendar__day--today': isToday,
6904
6905
  'sd-calendar__day--selected': isSelected,
6905
6906
  'sd-calendar__day--disabled': isDisabled,
6906
- }, 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 } })))))));
6907
+ }, 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 } })))))));
6907
6908
  })), legend.length > 0 && [
6908
- hAsync("span", { key: '0872cb7627db7d33721fbd1e1c9a601bd3c6c3e1', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
6909
- 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))))),
6909
+ hAsync("span", { key: 'a837c5956da658561fcbd2e646b0abbb0fa84a20', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
6910
+ 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))))),
6910
6911
  ]));
6911
6912
  }
6912
6913
  static get watchers() { return {
@@ -10709,6 +10710,9 @@ const table = {
10709
10710
  paddingY: "6"
10710
10711
  },
10711
10712
  paddingX: "16",
10713
+ frame: {
10714
+ padding: "8"
10715
+ },
10712
10716
  typography: {
10713
10717
  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",
10714
10718
  fontWeight: "400",
@@ -14362,7 +14366,9 @@ const TABLE_BODY_LAYOUT = {
14362
14366
  height: tableTokens.table.body.dense.height,
14363
14367
  paddingY: tableTokens.table.body.dense.paddingY,
14364
14368
  },
14365
- paddingX: tableTokens.table.body.paddingX};
14369
+ paddingX: tableTokens.table.body.paddingX,
14370
+ framePadding: tableTokens.table.body.frame.padding,
14371
+ };
14366
14372
  const TABLE_BODY_TYPOGRAPHY = {
14367
14373
  fontFamily: tableTokens.table.body.typography.fontFamily,
14368
14374
  fontWeight: tableTokens.table.body.typography.fontWeight,
@@ -14431,7 +14437,9 @@ class SdTable {
14431
14437
  get effectiveRowHeight() {
14432
14438
  if (this.rowHeight != null)
14433
14439
  return this.rowHeight;
14434
- return this.dense ? Number(TABLE_BODY_LAYOUT.dense.height) : Number(TABLE_BODY_LAYOUT.default.height);
14440
+ return this.dense
14441
+ ? Number(TABLE_BODY_LAYOUT.dense.height)
14442
+ : Number(TABLE_BODY_LAYOUT.default.height);
14435
14443
  }
14436
14444
  virtualBuffer = 5;
14437
14445
  virtualEndThreshold = 10;
@@ -14625,7 +14633,6 @@ class SdTable {
14625
14633
  el.unregisterSpanSync = this.unregisterSpanSync.bind(this);
14626
14634
  el.getSpanSync = this.getSpanSync.bind(this);
14627
14635
  el.isCoveredSync = this.isCoveredSync.bind(this);
14628
- el.isVisualLastRowSync = this.isVisualLastRowSync.bind(this);
14629
14636
  el.registerSeparatorSync = this.registerSeparatorSync.bind(this);
14630
14637
  el.unregisterSeparatorSync = this.unregisterSeparatorSync.bind(this);
14631
14638
  el.isVisualLastRowBeforeSeparatorSync = this.isVisualLastRowBeforeSeparatorSync.bind(this);
@@ -14636,6 +14643,7 @@ class SdTable {
14636
14643
  el.registerUseFrameSync = this.registerUseFrameSync.bind(this);
14637
14644
  el.unregisterUseFrameSync = this.unregisterUseFrameSync.bind(this);
14638
14645
  el.hasUseFrameInRowSync = this.hasUseFrameInRowSync.bind(this);
14646
+ el.isCellUseFrameSync = this.isCellUseFrameSync.bind(this);
14639
14647
  if (Array.isArray(this.rows)) {
14640
14648
  this.rowCount = this.rows.length;
14641
14649
  this.pushRowsToChildren(this.rows);
@@ -14713,8 +14721,15 @@ class SdTable {
14713
14721
  }
14714
14722
  });
14715
14723
  this.noDataContentResizeObserver.observe(target);
14716
- const measured = Math.ceil(target.scrollHeight);
14717
- this.noDataBodyHeight = Math.max(60, measured);
14724
+ readTask(() => {
14725
+ if (!this.noDataContentEl)
14726
+ return;
14727
+ const measured = Math.ceil(this.noDataContentEl.scrollHeight);
14728
+ const next = Math.max(60, measured);
14729
+ if (next !== this.noDataBodyHeight) {
14730
+ this.noDataBodyHeight = next;
14731
+ }
14732
+ });
14718
14733
  }
14719
14734
  // light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
14720
14735
  queryChildEl(selector) {
@@ -14838,6 +14853,9 @@ class SdTable {
14838
14853
  const fields = this.useFrameRegistry.get(rowKey);
14839
14854
  return fields != null && fields.size > 0;
14840
14855
  }
14856
+ isCellUseFrameSync(rowKey, field) {
14857
+ return this.useFrameRegistry.get(rowKey)?.has(field) ?? false;
14858
+ }
14841
14859
  isRowSelectedSync(row) {
14842
14860
  return Array.from(this.innerSelected).some(r => r[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id']);
14843
14861
  }
@@ -15106,7 +15124,7 @@ class SdTable {
15106
15124
  return false;
15107
15125
  }
15108
15126
  // rowspan을 반영한 셀의 시각적 하단 행 인덱스를 반환한다.
15109
- // isVisualLastRowSync·isVisualLastRowBeforeSeparatorSync 공통 헬퍼.
15127
+ // isVisualLastRowBeforeSeparatorSync 헬퍼.
15110
15128
  resolveVisualBottom(rowKey, field) {
15111
15129
  const myRowIdx = this.resolveRowIndex(rowKey);
15112
15130
  if (myRowIdx == null)
@@ -15115,20 +15133,6 @@ class SdTable {
15115
15133
  const rs = Math.max(1, span?.rowspan ?? 1);
15116
15134
  return myRowIdx + rs - 1;
15117
15135
  }
15118
- // 셀의 시각적 하단이 테이블(또는 현재 페이지)의 마지막 행인지 판정.
15119
- // 마지막 행에 border-bottom: none을 적용하기 위함.
15120
- isVisualLastRowSync(rowKey, field) {
15121
- if (this.rowCount <= 0)
15122
- return false;
15123
- const visualBottom = this.resolveVisualBottom(rowKey, field);
15124
- if (visualBottom == null)
15125
- return false;
15126
- const pageInfo = this.getPaginationInfoSync();
15127
- const lastVisibleIdx = pageInfo
15128
- ? Math.min(pageInfo.endIndex - 1, this.rowCount - 1)
15129
- : this.rowCount - 1;
15130
- return visualBottom === lastVisibleIdx;
15131
- }
15132
15136
  registerSeparatorSync(prevRowKey) {
15133
15137
  const idx = this.resolveRowIndex(prevRowKey);
15134
15138
  if (idx != null)
@@ -15245,25 +15249,25 @@ class SdTable {
15245
15249
  '--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
15246
15250
  '--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
15247
15251
  };
15248
- return (hAsync(Host, { key: '02d716bdac3832710bf58d63741aeeb4b04d434b', style: hostStyle }, hAsync("div", { key: '88faad346e032ca727375889aa0552a330f5799a', class: "sd-table__container", style: {
15252
+ return (hAsync(Host, { key: '2b7c1eaf862c45c73751af6035a022e8ce0314b4', style: hostStyle }, hAsync("div", { key: '35851e539eef8ff69ff03bd31f5d55d95eb8bf7a', class: "sd-table__container", style: {
15249
15253
  '--table-width': this.width,
15250
15254
  '--table-height': effectiveTableHeight,
15251
15255
  '--table-container-height': `calc(${effectiveTableHeight} - ${paginationHeight}px)`,
15252
- } }, hAsync("div", { key: '783934f349e0da5bab77cbb44cc12f0dfeb9ec71', class: {
15256
+ } }, hAsync("div", { key: 'e3bf5576fd1b1ee9ffab5d240de904204f4288d5', class: {
15253
15257
  'sd-table__wrapper': true,
15254
15258
  'sd-table__wrapper--radius-use-top': this.radius === 'useTop',
15255
- } }, hAsync("div", { key: 'd3a76ad0e853c6adf16df633c0e0b7f5bb580f24', class: {
15259
+ } }, hAsync("div", { key: 'a67ebcb802a3ed443cca1fc33a00787642e08e84', class: {
15256
15260
  'sd-table__scroll-container': true,
15257
15261
  'sd-table__scroll-container--loading': this.isLoading,
15258
15262
  'sd-table__scroll-container--no-data': isNoData,
15259
- } }, 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 => {
15263
+ } }, 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 => {
15260
15264
  this.noDataContentEl = el;
15261
15265
  if (el)
15262
15266
  this.syncNoDataContentObserver();
15263
- } }, 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 &&
15267
+ } }, 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 &&
15264
15268
  this.pagination.rowsPerPage > 0 &&
15265
15269
  this.rowCount > 0 &&
15266
- !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
15270
+ !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
15267
15271
  ? this.innerRowsPerPage
15268
15272
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
15269
15273
  if (!this.isRowsPerPageValue(e.detail))
@@ -15920,11 +15924,13 @@ class SdTd {
15920
15924
  this.syncSlotName();
15921
15925
  this.syncSpanRegistration();
15922
15926
  this.syncCellClassRegistration(oldField);
15927
+ this.syncUseFrameRegistration(oldField);
15923
15928
  }
15924
15929
  handleRowKeyChange(_newKey, oldKey) {
15925
15930
  this.syncSlotName();
15926
15931
  this.syncSpanRegistration();
15927
15932
  this.syncCellClassRegistration(undefined, oldKey);
15933
+ this.syncUseFrameRegistration(undefined, oldKey);
15928
15934
  }
15929
15935
  handleSpanChange() {
15930
15936
  this.syncSpanRegistration();
@@ -15935,15 +15941,15 @@ class SdTd {
15935
15941
  handleDividerChange() {
15936
15942
  this.syncCellClassRegistration();
15937
15943
  }
15938
- handleUseFieldChange() {
15939
- this.syncUseFieldRegistration();
15944
+ handleUseFrameChange() {
15945
+ this.syncUseFrameRegistration();
15940
15946
  this.requestParentTrUpdate();
15941
15947
  }
15942
15948
  componentWillLoad() {
15943
15949
  this.syncSlotName();
15944
15950
  this.syncSpanRegistration();
15945
15951
  this.syncCellClassRegistration();
15946
- this.syncUseFieldRegistration();
15952
+ this.syncUseFrameRegistration();
15947
15953
  // slot 타이밍 엇갈림 대응: 부모 sd-tr forceUpdate로 슬롯 재매칭
15948
15954
  const parentTr = this.el.parentElement;
15949
15955
  if (parentTr?.tagName?.toLowerCase() === 'sd-tr') ;
@@ -15952,7 +15958,7 @@ class SdTd {
15952
15958
  this.syncSlotName();
15953
15959
  this.syncSpanRegistration();
15954
15960
  this.syncCellClassRegistration();
15955
- this.syncUseFieldRegistration();
15961
+ this.syncUseFrameRegistration();
15956
15962
  }
15957
15963
  // React StrictMode에서는 disconnect/reconnect 사이클이 일어나면서
15958
15964
  // 동일 인스턴스의 componentWillLoad는 더 이상 호출되지 않는다.
@@ -15960,7 +15966,7 @@ class SdTd {
15960
15966
  connectedCallback() {
15961
15967
  this.syncSpanRegistration();
15962
15968
  this.syncCellClassRegistration();
15963
- this.syncUseFieldRegistration();
15969
+ this.syncUseFrameRegistration();
15964
15970
  }
15965
15971
  disconnectedCallback() {
15966
15972
  const table = this.findTable();
@@ -16014,9 +16020,16 @@ class SdTd {
16014
16020
  table.registerCellClassSync(String(this.rowKey), this.field, combinedClass);
16015
16021
  this.requestParentTrUpdate();
16016
16022
  }
16017
- syncUseFieldRegistration() {
16023
+ syncUseFrameRegistration(prevField, prevRowKey) {
16018
16024
  const table = this.findTable();
16019
- if (!table || this.field === '' || this.rowKey == null)
16025
+ if (!table)
16026
+ return;
16027
+ const oldField = prevField ?? this.field;
16028
+ const oldRowKey = prevRowKey ?? (this.rowKey != null ? String(this.rowKey) : undefined);
16029
+ if (oldField !== '' && oldRowKey != null) {
16030
+ table.unregisterUseFrameSync?.(oldRowKey, oldField);
16031
+ }
16032
+ if (this.field === '' || this.rowKey == null)
16020
16033
  return;
16021
16034
  if (this.useFrame) {
16022
16035
  table.registerUseFrameSync?.(String(this.rowKey), this.field);
@@ -16037,7 +16050,7 @@ class SdTd {
16037
16050
  }
16038
16051
  }
16039
16052
  render() {
16040
- return (hAsync(Host, { key: '7d51ea5f02ba2df099f4440be26c2f0be8a73a6b', class: { [`align-${this.align}`]: Boolean(this.align) } }, hAsync("slot", { key: '9a6a634e2bcd206ec9099c6be738c3853d0cbebf' })));
16053
+ return (hAsync(Host, { key: '505b602b609050870e7e80df9157dbc50d0cb8c1', class: { [`align-${this.align}`]: Boolean(this.align) } }, hAsync("slot", { key: '9910f02d98ce5e115b2a380954dd0a994f9f1c12' })));
16041
16054
  }
16042
16055
  static get watchers() { return {
16043
16056
  "field": [{
@@ -16062,7 +16075,7 @@ class SdTd {
16062
16075
  "handleDividerChange": 0
16063
16076
  }],
16064
16077
  "useFrame": [{
16065
- "handleUseFieldChange": 0
16078
+ "handleUseFrameChange": 0
16066
16079
  }]
16067
16080
  }; }
16068
16081
  static get style() { return sdTdCss(); }
@@ -17279,7 +17292,7 @@ class SdTooltip {
17279
17292
  }; }
17280
17293
  }
17281
17294
 
17282
- 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)}`;
17295
+ 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)}`;
17283
17296
 
17284
17297
  class SdTr {
17285
17298
  constructor(hostRef) {
@@ -17453,6 +17466,13 @@ class SdTr {
17453
17466
  const fieldName = typeof col.field === 'string' ? col.field : col.name;
17454
17467
  return this.tableEl.getCellClassSync(this.rowKey, fieldName);
17455
17468
  }
17469
+ getFramePaddingStyle(field) {
17470
+ if (!this._dense)
17471
+ return undefined;
17472
+ if (!(this.tableEl?.isCellUseFrameSync?.(this.rowKey, field) ?? false))
17473
+ return undefined;
17474
+ return { padding: `${TABLE_BODY_LAYOUT.framePadding}px` };
17475
+ }
17456
17476
  expandCellClass(classStr) {
17457
17477
  if (classStr == null || classStr === '')
17458
17478
  return {};
@@ -17461,20 +17481,6 @@ class SdTr {
17461
17481
  .filter(Boolean)
17462
17482
  .map(c => [c, true]));
17463
17483
  }
17464
- isVisualLastRow(col) {
17465
- if (!this.tableEl?.isVisualLastRowSync)
17466
- return false;
17467
- const fieldName = typeof col.field === 'string' ? col.field : col.name;
17468
- return this.tableEl.isVisualLastRowSync(this.rowKey, fieldName);
17469
- }
17470
- // selectable td는 column 정보가 없으므로 빈 field로 평가한다.
17471
- // 해당 위치는 rowspan을 등록할 수 없으므로 spanRegistry에 매칭이 없고,
17472
- // 결과적으로 "내 row 자체가 시각적 마지막인지"가 판정된다.
17473
- isVisualLastRowForSelfRow() {
17474
- if (!this.tableEl?.isVisualLastRowSync)
17475
- return false;
17476
- return this.tableEl.isVisualLastRowSync(this.rowKey, '');
17477
- }
17478
17484
  isVisualLastRowBeforeSeparator(col) {
17479
17485
  if (!this.tableEl?.isVisualLastRowBeforeSeparatorSync)
17480
17486
  return false;
@@ -17495,12 +17501,13 @@ class SdTr {
17495
17501
  const hasRowspan = this.tableEl?.hasRowspanSync?.() ?? false;
17496
17502
  const isUseFrameRow = this.tableEl?.hasUseFrameInRowSync?.(this.rowKey) ?? false;
17497
17503
  const effectiveDense = this._dense && !isUseFrameRow;
17498
- const bodyLayout = effectiveDense ? TABLE_BODY_LAYOUT.dense : TABLE_BODY_LAYOUT.default;
17504
+ const rowLayoutY = effectiveDense ? TABLE_BODY_LAYOUT.dense : TABLE_BODY_LAYOUT.default;
17505
+ const rowPaddingX = this._dense && isUseFrameRow ? TABLE_BODY_LAYOUT.paddingX : TABLE_BODY_LAYOUT.paddingX;
17499
17506
  const rowStyle = {
17500
17507
  'display': this.isVisible ? '' : 'none',
17501
- '--table-body-height': `${bodyLayout.height}px`,
17502
- '--table-body-padding-y': `${bodyLayout.paddingY}px`,
17503
- '--table-body-padding-x': `${TABLE_BODY_LAYOUT.paddingX}px`,
17508
+ '--table-body-height': `${rowLayoutY.height}px`,
17509
+ '--table-body-padding-y': `${rowLayoutY.paddingY}px`,
17510
+ '--table-body-padding-x': `${rowPaddingX}px`,
17504
17511
  '--table-body-font-family': TABLE_BODY_TYPOGRAPHY.fontFamily,
17505
17512
  '--table-body-font-weight': TABLE_BODY_TYPOGRAPHY.fontWeight,
17506
17513
  '--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
@@ -17518,7 +17525,6 @@ class SdTr {
17518
17525
  return (hAsync(Host, { style: rowStyle }, hAsync("tr", { class: { 'tr': true, 'tr--no-hover': hasRowspan } }, this._selectable && (hAsync("td", { class: {
17519
17526
  'td': true,
17520
17527
  'td--selected': true,
17521
- 'td--last-row': this.isVisualLastRowForSelfRow(),
17522
17528
  'td--before-separator': this.isVisualLastRowBeforeSeparatorForSelfRow(),
17523
17529
  'sticky-left': true,
17524
17530
  'sticky-left-edge': stickyLeftCount === 0,
@@ -17526,19 +17532,19 @@ class SdTr {
17526
17532
  }, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { value: this.isSelected(), onSdUpdate: () => this.handleSelect() }))), stickyLeftCols.map((col, idx) => {
17527
17533
  if (this.isCovered(idx))
17528
17534
  return null;
17535
+ const fieldName = typeof col.field === 'string' ? col.field : col.name;
17529
17536
  const span = this.getSpanFor(col);
17530
17537
  const sdCellClass = this.getCellClassFor(col);
17531
17538
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17532
17539
  'td': true,
17533
17540
  [`td--${col.align || 'left'}`]: true,
17534
- 'td--last-row': this.isVisualLastRow(col),
17535
17541
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17536
17542
  'sticky-left': true,
17537
17543
  'sticky-left-edge': idx === stickyLeftCount - 1,
17538
17544
  'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
17539
17545
  [`${col.tdClass}`]: Boolean(col.tdClass),
17540
17546
  ...this.expandCellClass(sdCellClass),
17541
- }, 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)))));
17547
+ }, style: { ...this.getStickyStyle(idx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17542
17548
  }), middleCols.map((col, relativeIdx) => {
17543
17549
  const actualColIdx = stickyLeftCount + relativeIdx;
17544
17550
  if (this.isCovered(actualColIdx))
@@ -17549,11 +17555,10 @@ class SdTr {
17549
17555
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17550
17556
  'td': true,
17551
17557
  [`td--${col.align || 'left'}`]: true,
17552
- 'td--last-row': this.isVisualLastRow(col),
17553
17558
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17554
17559
  [`${col.tdClass}`]: Boolean(col.tdClass),
17555
17560
  ...this.expandCellClass(sdCellClass),
17556
- }, style: this.getStickyStyle(actualColIdx) }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17561
+ }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17557
17562
  }), stickyRightCols.map((col, relativeIdx) => {
17558
17563
  const actualColIdx = this.visibleColumns.length - stickyRightCount + relativeIdx;
17559
17564
  if (this.isCovered(actualColIdx))
@@ -17564,14 +17569,13 @@ class SdTr {
17564
17569
  return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
17565
17570
  'td': true,
17566
17571
  [`td--${col.align || 'left'}`]: true,
17567
- 'td--last-row': this.isVisualLastRow(col),
17568
17572
  'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
17569
17573
  'sticky-right': true,
17570
17574
  'sticky-right-edge': relativeIdx === 0,
17571
17575
  'is-scrolled-right': relativeIdx === 0 && this._scrolledRight,
17572
17576
  [`${col.tdClass}`]: Boolean(col.tdClass),
17573
17577
  ...this.expandCellClass(sdCellClass),
17574
- }, style: this.getStickyStyle(actualColIdx) }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17578
+ }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
17575
17579
  }))));
17576
17580
  }
17577
17581
  static get style() { return sdTrCss(); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellmate/design-system",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Sellmate Design System - Web Components Library built with Stencil",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1 +0,0 @@
1
- import{p as t,H as s,h as e,d as i,t as o}from"./p-BjkROjjt.js";import{T as r}from"./p-sZMi_32I.js";import{i as l,b as n,a,T as h}from"./p-mmdt-WnS.js";import{d}from"./p-INdVvadB.js";import{d as c}from"./p-BSfu4DO2.js";const p=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost()}get el(){return this}columns;selectable;stickyColumn;rowKey="";row={};separator;tableId="";columnWidths=[];isVisible=!0;spansVersion=0;_columns=[];_selectable=!1;_stickyColumn={left:0,right:0};_scrolledLeft=!1;_scrolledRight=!1;_dense=!1;tableEl=null;_prevRowKey=null;componentWillLoad(){this.syncTableContext(),this.columnWidths=this.columnWidths??[],this.resolveConfig(),this.columnWidths=this._columns.map((t=>t.autoWidth?0:parseInt(t.width||"120",10))),this.updateVisibilitySync()}componentDidLoad(){if(this.syncTableContext(),this.separator){const t=this.el.previousElementSibling;if("sd-tr"===t?.tagName?.toLowerCase()){const s=t.rowKey;this._prevRowKey=s,this.tableEl?.registerSeparatorSync?.(s)}}}disconnectedCallback(){null!==this._prevRowKey&&(this.tableEl?.unregisterSeparatorSync?.(this._prevRowKey),this._prevRowKey=null)}syncTableContext(){const t=this.el.closest("sd-table"),s=this.el.getRootNode(),e=s instanceof ShadowRoot?s.host:null,i=t??e;this.tableEl=i;const o=i?.getTableIdSync?.(),l=i?.getAttribute(r),n=(null!=o&&""!==o&&"undefined"!==o?o:null)??(null!=l&&""!==l&&"undefined"!==l?l:null)??"";""!==n&&n!==this.tableId&&(this.tableId=n)}resolveConfig(){const t=this.tableEl?.getConfigSync?.();this._columns=this.columns??t?.columns??[],this._selectable=this.selectable??t?.selectable??!1,this._stickyColumn=this.stickyColumn??t?.stickyColumn??{left:0,right:0},this._scrolledLeft=t?.scrolledLeft??!1,this._scrolledRight=t?.scrolledRight??!1,this._dense=t?.dense??!1,t?.columnWidths&&0===(this.columnWidths??[]).length&&(this.columnWidths=[...t.columnWidths])}async refreshConfig(){this.resolveConfig()}async bumpSpansVersion(){this.spansVersion=this.spansVersion+1}async updateVisibility(){this.updateVisibilitySync()}updateVisibilitySync(){const t=parseInt(this.rowKey,10),s=this.tableEl?.getPaginationInfoSync?.();this.isVisible=!s||t>=s.startIndex&&t<s.endIndex}async setColumnWidths(t){this.columnWidths=t}async refreshSelection(){const t=this.el.querySelector("sd-checkbox");t&&(t.value=this.isSelected())}get visibleColumns(){return this._columns.filter((t=>!1!==t.visible))}formatValue(t){return null==t?"":"number"==typeof t?t.toLocaleString():String(t)}getCellValue(t){const{field:s,format:e,name:i}=t,o="function"==typeof s?s(this.row):""!==s?this.row[s]:this.row[i];return e?e(o,this.row):this.formatValue(o)}getStickyStyle(t){if(this.tableEl?.getStickyStyleSync)return this.tableEl.getStickyStyleSync(t);const s=this.columnWidths.slice(0,t).reduce(((t,s)=>t+s),0)+(this._selectable?52:0),e=this.columnWidths.filter(((s,e)=>e>=this.visibleColumns.length-(this._stickyColumn.right||0)&&e>t)).reduce(((t,s)=>t+s),0),i=this.visibleColumns[t],o={"--sticky-left-offset":`${s}px`,"--sticky-right-offset":`${e}px`};return i?.autoWidth||(o.width=`${this.columnWidths[t]}px`,o.minWidth=`${this.columnWidths[t]}px`,o.maxWidth=`${this.columnWidths[t]}px`),o}isSelected(){return!!this.tableEl?.isRowSelectedSync&&this.tableEl.isRowSelectedSync(this.row)}handleSelect(){this.tableEl?.updateRowSelectSync&&this.tableEl.updateRowSelectSync(this.row)}getSpanFor(t){if(this.tableEl?.getSpanSync)return this.tableEl.getSpanSync(this.rowKey,"string"==typeof t.field?t.field:t.name)}isCovered(t){return!!this.tableEl?.isCoveredSync&&this.tableEl.isCoveredSync(this.rowKey,t,this._columns)}getCellClassFor(t){if(this.tableEl?.getCellClassSync)return this.tableEl.getCellClassSync(this.rowKey,"string"==typeof t.field?t.field:t.name)}expandCellClass(t){return null==t||""===t?{}:Object.fromEntries(t.split(/\s+/).filter(Boolean).map((t=>[t,!0])))}isVisualLastRow(t){return!!this.tableEl?.isVisualLastRowSync&&this.tableEl.isVisualLastRowSync(this.rowKey,"string"==typeof t.field?t.field:t.name)}isVisualLastRowForSelfRow(){return!!this.tableEl?.isVisualLastRowSync&&this.tableEl.isVisualLastRowSync(this.rowKey,"")}isVisualLastRowBeforeSeparator(t){return!!this.tableEl?.isVisualLastRowBeforeSeparatorSync&&this.tableEl.isVisualLastRowBeforeSeparatorSync(this.rowKey,"string"==typeof t.field?t.field:t.name)}isVisualLastRowBeforeSeparatorForSelfRow(){return!!this.tableEl?.isVisualLastRowBeforeSeparatorSync&&this.tableEl.isVisualLastRowBeforeSeparatorSync(this.rowKey,"")}render(){const t=this._stickyColumn.left||0,s=this._stickyColumn.right||0,o=this.visibleColumns.slice(0,t),r=this.visibleColumns.slice(t,this.visibleColumns.length-s),d=this.visibleColumns.slice(this.visibleColumns.length-s),c=this.tableEl?.hasRowspanSync?.()??!1,p=this.tableEl?.hasUseFrameInRowSync?.(this.rowKey)??!1,b=this._dense&&!p?h.dense:h.default,f={display:this.isVisible?"":"none","--table-body-height":`${b.height}px`,"--table-body-padding-y":`${b.paddingY}px`,"--table-body-padding-x":`${h.paddingX}px`,"--table-body-font-family":a.fontFamily,"--table-body-font-weight":a.fontWeight,"--table-body-font-size":`${a.fontSize}px`,"--table-body-line-height":`${a.lineHeight}px`,"--table-body-text-decoration":a.textDecoration,"--table-border-color":n.color,"--table-border-width":`${n.width}px`,"--table-separator-color":l.color,"--table-separator-width":`${l.width}px`};return e(i,{style:f},this.separator?e("tr",{class:"tr tr--separator"},e("td",{colSpan:this.visibleColumns.length+(this._selectable?1:0),class:"td td--separator"})):e("tr",{class:{tr:!0,"tr--no-hover":c}},this._selectable&&e("td",{class:{td:!0,"td--selected":!0,"td--last-row":this.isVisualLastRowForSelfRow(),"td--before-separator":this.isVisualLastRowBeforeSeparatorForSelfRow(),"sticky-left":!0,"sticky-left-edge":0===t,"is-scrolled-left":0===t&&this._scrolledLeft},style:{"--sticky-left-offset":"0px"}},e("sd-checkbox",{value:this.isSelected(),onSdUpdate:()=>this.handleSelect()})),o.map(((s,i)=>{if(this.isCovered(i))return null;const o=this.getSpanFor(s),r=this.getCellClassFor(s);return e("td",{key:s.name,rowSpan:o?.rowspan,colSpan:o?.colspan,class:{td:!0,[`td--${s.align||"left"}`]:!0,"td--last-row":this.isVisualLastRow(s),"td--before-separator":this.isVisualLastRowBeforeSeparator(s),"sticky-left":!0,"sticky-left-edge":i===t-1,"is-scrolled-left":i===t-1&&this._scrolledLeft,[`${s.tdClass}`]:Boolean(s.tdClass),...this.expandCellClass(r)},style:this.getStickyStyle(i)},e("slot",{name:`${this.tableId}-${"string"==typeof s.field?s.field:s.name}-${this.rowKey}`},e("span",null,this.getCellValue(s))))})),r.map(((s,i)=>{const o=t+i;if(this.isCovered(o))return null;const r="string"==typeof s.field?s.field:s.name,l=this.getSpanFor(s),n=this.getCellClassFor(s);return e("td",{key:s.name,rowSpan:l?.rowspan,colSpan:l?.colspan,class:{td:!0,[`td--${s.align||"left"}`]:!0,"td--last-row":this.isVisualLastRow(s),"td--before-separator":this.isVisualLastRowBeforeSeparator(s),[`${s.tdClass}`]:Boolean(s.tdClass),...this.expandCellClass(n)},style:this.getStickyStyle(o)},e("slot",{name:`${this.tableId}-${r}-${this.rowKey}`},e("span",null,this.getCellValue(s))))})),d.map(((t,i)=>{const o=this.visibleColumns.length-s+i;if(this.isCovered(o))return null;const r="string"==typeof t.field?t.field:t.name,l=this.getSpanFor(t),n=this.getCellClassFor(t);return e("td",{key:t.name,rowSpan:l?.rowspan,colSpan:l?.colspan,class:{td:!0,[`td--${t.align||"left"}`]:!0,"td--last-row":this.isVisualLastRow(t),"td--before-separator":this.isVisualLastRowBeforeSeparator(t),"sticky-right":!0,"sticky-right-edge":0===i,"is-scrolled-right":0===i&&this._scrolledRight,[`${t.tdClass}`]:Boolean(t.tdClass),...this.expandCellClass(n)},style:this.getStickyStyle(o)},e("slot",{name:`${this.tableId}-${r}-${this.rowKey}`},e("span",null,this.getCellValue(t))))}))))}static get style(){return'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)}'}},[772,"sd-tr",{columns:[16],selectable:[4],stickyColumn:[16],rowKey:[1,"row-key"],row:[16],separator:[4],tableId:[32],columnWidths:[32],isVisible:[32],spansVersion:[32],_columns:[32],_selectable:[32],_stickyColumn:[32],_scrolledLeft:[32],_scrolledRight:[32],_dense:[32],refreshConfig:[64],bumpSpansVersion:[64],updateVisibility:[64],setColumnWidths:[64],refreshSelection:[64]}]);function b(){"undefined"!=typeof customElements&&["sd-tr","sd-checkbox","sd-icon"].forEach((t=>{switch(t){case"sd-tr":customElements.get(o(t))||customElements.define(o(t),p);break;case"sd-checkbox":customElements.get(o(t))||d();break;case"sd-icon":customElements.get(o(t))||c()}}))}export{p as S,b as d}
@@ -1 +0,0 @@
1
- var e={table:{header:{height:"36",paddingX:"16",gap:"4",bg:"#F5FAFF",typography:{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",fontWeight:"500",fontSize:"12",lineHeight:"20",textDecoration:"none"},resizingBar:{color:"#CCCCCC",height:"16"}},body:{default:{height:"44",paddingY:"8"},dense:{height:"32",paddingY:"6"},paddingX:"16",typography:{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",fontWeight:"400",fontSize:"12",lineHeight:"20",textDecoration:"none"}},border:{color:"#E1E1E1",width:"1"},content:{gap:"8"},radius:"8",keyValue:{body:{padding:"8"},height:"44",search:{paddingX:"32",bg:"#F9F9F9"}},separator:{color:"#EEEEEE",Width:"6"}}};export{e as t}
@@ -1 +0,0 @@
1
- import{p as a,H as e,c as d,h as n,t as r}from"./p-BjkROjjt.js";import{u as t,t as l,W as c,C as s}from"./p-DnW8EAqd.js";import{d as i}from"./p-D7nYP2a4.js";import{d as o}from"./p-BSfu4DO2.js";const h=a(class extends e{constructor(a){super(),!1!==a&&this.__registerHost(),this.update=d(this,"sdUpdate",7),this.viewChange=d(this,"sdViewChange",7)}value=null;selectable;events;currentYear;currentMonth;update;viewChange;dateUtil=t();_eventMapCache;get eventMap(){const a=this._eventMapCache;if(a&&a.src===this.events)return a.map;const e=new Map;return(this.events??[]).forEach((a=>a.dates.forEach((d=>{const n=e.get(d)??[];n.push({color:a.color,label:a.label}),e.set(d,n)})))),this._eventMapCache={src:this.events,map:e},e}get legendItems(){const a=new Set,e=[];return(this.events??[]).forEach((d=>{const n=`${d.color}|${d.label}`;a.has(n)||(a.add(n),e.push({color:d.color,label:d.label}))})),e}componentWillLoad(){this.syncViewFromValue()}handleValueChange(){this.syncViewFromValue()}syncViewFromValue(){const a=this.value||l,[e,d]=a.split("-").map(Number);this.currentYear=e,this.currentMonth=d}formatDate(a,e,d){return`${a}-${String(e).padStart(2,"0")}-${String(d).padStart(2,"0")}`}get cells(){const a=this.currentYear,e=this.currentMonth,d=new Date(a,e-1,1).getDay(),n=new Date(a,e,0).getDate(),r=1===e?12:e-1,t=1===e?a-1:a,l=new Date(t,r,0).getDate(),c=12===e?1:e+1,s=12===e?a+1:a,i=[];for(let a=d-1;a>=0;a--){const e=l-a;i.push({date:this.formatDate(t,r,e),day:e,inCurrentMonth:!1})}for(let d=1;d<=n;d++)i.push({date:this.formatDate(a,e,d),day:d,inCurrentMonth:!0});const o=(7-i.length%7)%7;for(let a=1;a<=o;a++)i.push({date:this.formatDate(s,c,a),day:a,inCurrentMonth:!1});return i}emitViewChange(){this.viewChange.emit({year:this.currentYear,month:this.currentMonth})}goPrevYear=a=>{a.stopPropagation(),this.currentYear-=1,this.emitViewChange()};goNextYear=a=>{a.stopPropagation(),this.currentYear+=1,this.emitViewChange()};goPrevMonth=a=>{a.stopPropagation();const{newYear:e,newMonth:d}=this.dateUtil.calculateYearMonth(this.currentYear,this.currentMonth,"prev");this.currentYear=e,this.currentMonth=d,this.emitViewChange()};goNextMonth=a=>{a.stopPropagation();const{newYear:e,newMonth:d}=this.dateUtil.calculateYearMonth(this.currentYear,this.currentMonth,"next");this.currentYear=e,this.currentMonth=d,this.emitViewChange()};isDisabled(a){if(!this.selectable)return!1;const[e,d]=this.selectable;return""!==e&&a<e||""!==d&&a>d}handleDayClick(a){this.isDisabled(a.date)||(this.value=a.date,this.update.emit(a.date))}render(){const a=this.eventMap,e=this.legendItems;return n("div",{key:"66c0bec57c13af12b05f2e90fbc5e1674ab052c8",class:"sd-calendar",style:{"--calendar-bg":s.bg,"--calendar-padding":`${s.paddingXY}px`,"--calendar-gap":`${s.gap}px`,"--calendar-radius":`${s.radius}px`,"--calendar-header-gap":`${s.header.gap}px`,"--calendar-header-divider":s.header.divider,"--calendar-header-font-size":`${s.header.fontSize}px`,"--calendar-header-line-height":`${s.header.lineHeight}px`,"--calendar-header-font-weight":s.header.fontWeight,"--calendar-week-font-size":`${s.week.fontSize}px`,"--calendar-week-line-height":`${s.week.lineHeight}px`,"--calendar-week-font-weight":s.week.fontWeight,"--calendar-week-color":s.week.color,"--calendar-grid-row-gap":`${s.grid.rowGap}px`,"--calendar-day-size":`${s.day.size}px`,"--calendar-day-circle-size":`${s.day.circleSize}px`,"--calendar-day-circle-radius":`${s.day.circleRadius}px`,"--calendar-day-text":s.day.defaultText,"--calendar-day-hover-text":s.day.hoverText,"--calendar-day-hover-border":s.day.hoverBorder,"--calendar-day-select-bg":s.day.selectBg,"--calendar-day-select-text":s.day.selectText,"--calendar-day-disabled-text":s.day.disabledText,"--calendar-day-font-size":`${s.day.fontSize}px`,"--calendar-day-line-height":`${s.day.lineHeight}px`,"--calendar-day-font-weight":s.day.fontWeight,"--calendar-day-bold-font-weight":s.day.boldFontWeight,"--calendar-day-dot-size":`${s.day.dot.size}px`,"--calendar-day-dot-gap":`${s.day.dot.gap}px`,"--calendar-day-dot-padding-y":`${s.day.dot.paddingY}px`,"--calendar-legend-font-size":`${s.legend.fontSize}px`,"--calendar-legend-line-height":`${s.legend.lineHeight}px`,"--calendar-legend-font-weight":s.legend.fontWeight,"--calendar-legend-gap":`${s.legend.gap}px`,"--calendar-legend-group-gap":`${s.legend.groupGap}px`}},n("div",{key:"4df4f1c6d1ddcbe1478a69a481a228e66fc33c0a",class:"sd-calendar__header"},n("div",{key:"378c04444b3ddcc7df92ecce0f49056e919cd8e5",class:"sd-calendar__nav-group"},n("sd-ghost-button",{key:"47426c62a26b05a9db58144acc33770713e7fce4",ariaLabel:"prevYear",size:"xxs",icon:"chevronLeft",onClick:this.goPrevYear}),n("span",{key:"3b32e76a8a35705d820803c0b747829370079324",class:"sd-calendar__label"},this.currentYear),n("sd-ghost-button",{key:"2e890a2cea91c9f49a03f0db3a4b943c707e312e",ariaLabel:"nextYear",size:"xxs",icon:"chevronRight",onClick:this.goNextYear})),n("span",{key:"795bb8452e75303c25a8dc6d95f819f1e42f7f49",class:"sd-calendar__divider","aria-hidden":"true"}),n("div",{key:"6df460ec38917c51eff851732c7f37b7e09475f6",class:"sd-calendar__nav-group sd-calendar__nav-group-month"},n("sd-ghost-button",{key:"36ef9dfdcfac5d9da08d05ca357fc9ec4100af4f",ariaLabel:"prevMonth",size:"xxs",icon:"chevronLeft",onClick:this.goPrevMonth}),n("span",{key:"b2e0cc74570724c0d97fb2afbcb775c0794583af",class:"sd-calendar__label sd-calendar__label-month"},this.currentMonth,"월"),n("sd-ghost-button",{key:"4c45467356411f7a5d137c19931d8fc62084c742",ariaLabel:"nextMonth",size:"xxs",icon:"chevronRight",onClick:this.goNextMonth}))),n("div",{key:"e1637a39795fb44bd33d138c8b244cc15b5f85f6",class:"sd-calendar__week"},c.map((a=>n("span",{key:a,class:"sd-calendar__week-cell"},a)))),n("div",{key:"45642dc93b1373dc760f64ba74dd931e651279dd",class:"sd-calendar__grid"},this.cells.map((e=>{const d=e.inCurrentMonth&&""!==this.value&&this.value===e.date,r=e.inCurrentMonth&&l===e.date,t=e.inCurrentMonth&&this.isDisabled(e.date),c=e.inCurrentMonth?a.get(e.date):void 0;return n("button",{type:"button",key:e.date,class:{"sd-calendar__day":!0,"sd-calendar__day--empty":!e.inCurrentMonth,"sd-calendar__day--today":r,"sd-calendar__day--selected":d,"sd-calendar__day--disabled":t},disabled:!e.inCurrentMonth||t,tabindex:e.inCurrentMonth?void 0:-1,"aria-hidden":e.inCurrentMonth?void 0:"true",onClick:()=>e.inCurrentMonth&&this.handleDayClick(e)},n("span",{class:"sd-calendar__day-circle"},e.inCurrentMonth?e.day:""),c&&c.length>0&&n("span",{class:"sd-calendar__dot-row","aria-hidden":"true"},c.map(((a,e)=>n("span",{key:`${a.color}|${a.label}|${e}`,class:"sd-calendar__dot",style:{backgroundColor:a.color}})))))}))),e.length>0&&[n("span",{key:"0872cb7627db7d33721fbd1e1c9a601bd3c6c3e1",class:"sd-calendar__divider-bottom","aria-hidden":"true"}),n("div",{key:"d9c6be0684720aa9d2af24b2d0cf372a036dc8d5",class:"sd-calendar__legend"},e.map((a=>n("span",{key:`${a.color}|${a.label}`,class:"sd-calendar__legend-item"},n("span",{class:"sd-calendar__legend-dot",style:{backgroundColor:a.color},"aria-hidden":"true"}),n("span",{class:"sd-calendar__legend-label"},a.label)))))])}static get watchers(){return{value:[{handleValueChange:0}]}}static get style(){return"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}"}},[512,"sd-calendar",{value:[1025],selectable:[16],events:[16],currentYear:[32],currentMonth:[32]},void 0,{value:[{handleValueChange:0}]}]);function g(){"undefined"!=typeof customElements&&["sd-calendar","sd-ghost-button","sd-icon"].forEach((a=>{switch(a){case"sd-calendar":customElements.get(r(a))||customElements.define(r(a),h);break;case"sd-ghost-button":customElements.get(r(a))||i();break;case"sd-icon":customElements.get(r(a))||o()}}))}export{h as S,g as d}
@@ -1 +0,0 @@
1
- import{t as a}from"./p-BnfUIhUj.js";import{s as o}from"./p-GBlVDmy4.js";const t={height:a.table.header.height,paddingX:a.table.header.paddingX,gap:a.table.header.gap},i={fontFamily:a.table.header.typography.fontFamily,fontWeight:a.table.header.typography.fontWeight,fontSize:a.table.header.typography.fontSize,lineHeight:a.table.header.typography.lineHeight,textDecoration:a.table.header.typography.textDecoration},e={bg:a.table.header.bg},n={color:a.table.header.resizingBar.color,height:a.table.header.resizingBar.height},s={default:{height:a.table.body.default.height,paddingY:a.table.body.default.paddingY},dense:{height:a.table.body.dense.height,paddingY:a.table.body.dense.paddingY},paddingX:a.table.body.paddingX},r={fontFamily:a.table.body.typography.fontFamily,fontWeight:a.table.body.typography.fontWeight,fontSize:a.table.body.typography.fontSize,lineHeight:a.table.body.typography.lineHeight,textDecoration:a.table.body.typography.textDecoration},d={color:a.table.border.color,width:a.table.border.width},g={color:a.table.separator.color,width:a.table.separator.Width},h=a.table.radius,p={pageEdit:o.color.darkblue.strong,arrowDown:o.color.darkblue.strong,arrowUp:o.color.darkblue.strong,updown:o.color.grey.strong,pageMove:o.color.darkblue.strong,star:o.color.blue.strong},f=(a,o)=>o??p[a],w=a=>"asc"===a?"arrowDown":"desc"===a?"arrowUp":"updown";export{s as T,r as a,d as b,h as c,w as d,n as e,i as f,e as g,t as h,g as i,f as r}
@@ -1 +0,0 @@
1
- import{r as t,c as s,a as e,d as i,f as h,h as a,H as n}from"./p-0U6dRjlq.js";import{T as r}from"./p-sZMi_32I.js";import{T as l,a as o,b as d,c}from"./p-mmdt-WnS.js";import"./p-BnfUIhUj.js";import"./p-GBlVDmy4.js";let u=(t=21)=>{let s="",e=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&e[t]];return s};const b=class{constructor(e){t(this,e),this.sdSelectChange=s(this,"sdSelectChange",7),this.sdPageChange=s(this,"sdPageChange",7),this.sdRowsPerPageChange=s(this,"sdRowsPerPageChange",7),this.sdVirtualUpdate=s(this,"sdVirtualUpdate",7),this.sdVirtualReachEnd=s(this,"sdVirtualReachEnd",7)}static DEFAULT_NO_DATA_LABEL="데이터가 없습니다.";get el(){return e(this)}tableId=u(8);fallbackTableId=u(8);columns=[];rows;selected=[];rowKey="id";selectable=!1;resizable=!1;width;height;stickyHeader=!1;stickyColumn={left:0,right:0};radius="default";noDataLabel=b.DEFAULT_NO_DATA_LABEL;resolvedNoDataLabel=b.DEFAULT_NO_DATA_LABEL;isLoading=!1;pagination;useInternalPagination=!1;useRowsPerPageSelect=!1;dense=!1;useVirtualScroll=!1;rowHeight;get effectiveRowHeight(){return null!=this.rowHeight?this.rowHeight:Number(this.dense?l.dense.height:l.default.height)}virtualBuffer=5;virtualEndThreshold=10;rowsPerPageOption=[{label:"10개씩 보기",value:10},{label:"25개씩 보기",value:25},{label:"50개씩 보기",value:50},{label:"100개씩 보기",value:100}];sdSelectChange;sdPageChange;sdRowsPerPageChange;sdVirtualUpdate;sdVirtualReachEnd;currentPage=1;innerRowsPerPage=10;innerSelected=new Set;columnWidths=[];scrolledLeft=!1;scrolledRight=!1;rowCount=0;loadingScrollTop=0;noDataBodyHeight=60;autoThead=!1;autoTbody=!1;vsStart=0;vsEnd=0;lastReachEndNotifiedRowCount=-1;scrollContainer=null;noDataContentEl=null;noDataContentResizeObserver;onScroll;spanRegistry=new Map;useFrameRegistry=new Map;cellClassRegistry=new Map;separatorPrevIndices=new Set;rowIndexMap=new Map;rebuildRowIndexMap(){if(this.rowIndexMap.clear(),!Array.isArray(this.rows))return;const t=this.rowKey;this.rows.forEach(((s,e)=>{const i=s?.[t];null!=i&&this.rowIndexMap.set(String(i),e)}))}resolveRowIndex(t){const s=this.rowIndexMap.get(t);if(void 0!==s)return s;const e=Number(t);return Number.isFinite(e)?e:null}toFiniteNumber(t,s){const e="number"==typeof t?t:Number(t);return Number.isFinite(e)?e:s}isRowsPerPageValue(t){return null===t||"string"==typeof t||"number"==typeof t}isValidTableId(t){return"string"==typeof t&&t.trim().length>0&&"undefined"!==t&&"null"!==t}getResolvedTableId(){if(this.isValidTableId(this.tableId))return this.tableId;const t=this.el?.getAttribute(r);return this.isValidTableId(t)?t:this.fallbackTableId}syncTableIdAttribute(){const t=this.getResolvedTableId();this.el?.getAttribute(r)!==t&&this.el.setAttribute(r,t)}handleIsLoadingChange(t){t&&(this.loadingScrollTop=this.scrollContainer?.scrollTop??0),this.syncNoDataContentObserver()}handleUseVirtualScrollChange(t){t&&i((()=>this.propagateVirtualUpdate()))}handleColumnsChange(t){this.columnWidths=t.map((t=>t.autoWidth?0:parseInt(t.width||"120",10))),this.refreshChildrenConfig()}handleRowsChange(t){Array.isArray(t)&&(this.rowCount=t.length,this.rebuildRowIndexMap(),this.useVirtualScroll&&this.propagateVirtualUpdate(!0),this.pushRowsToChildren(t),this.syncNoDataContentObserver())}handleRowKeyChange(){this.rebuildRowIndexMap()}handleTableIdChange(){this.syncTableIdAttribute()}handleNoDataLabelChange(t){this.resolvedNoDataLabel="string"==typeof t&&t.trim().length>0&&"undefined"!==t&&"null"!==t?t:b.DEFAULT_NO_DATA_LABEL}handleConfigChange(){this.refreshChildrenConfig()}handleSelectedChange(t){this.innerSelected=new Set(t)}handlePaginationChange(t){null!=t?.page&&t.page!==this.currentPage&&(this.currentPage=t.page),null!=t?.rowsPerPage&&t.rowsPerPage!==this.innerRowsPerPage&&(this.innerRowsPerPage=t.rowsPerPage)}detectChildren(){const t=!!this.el.querySelector(":scope > sd-thead"),s=!!this.el.querySelector(":scope > sd-tbody");this.autoThead=!t,this.autoTbody=!s}componentWillLoad(){this.syncTableIdAttribute(),this.handleNoDataLabelChange(this.noDataLabel),this.detectChildren(),this.innerSelected=new Set(this.selected||[]),this.columnWidths=(this.columns||[]).map((t=>t.autoWidth?0:parseInt(t.width||"120",10))),this.rebuildRowIndexMap(),null!=this.pagination?.page&&(this.currentPage=this.pagination.page),null!=this.pagination?.rowsPerPage&&(this.innerRowsPerPage=this.pagination.rowsPerPage);const t=this.el;t.isRowSelectedSync=this.isRowSelectedSync.bind(this),t.updateRowSelectSync=this.updateRowSelectSync.bind(this),t.toggleSelectAllSync=this.toggleSelectAllSync.bind(this),t.getIsAllCheckedSync=this.getIsAllCheckedSync.bind(this),t.getStickyStyleSync=this.getStickyStyleSync.bind(this),t.setRowCountSync=this.setRowCountSync.bind(this),t.handleResize=this.handleResize.bind(this),t.getPaginationInfoSync=this.getPaginationInfoSync.bind(this),t.getVirtualScrollRangeSync=this.getVirtualScrollRangeSync.bind(this),t.getConfigSync=this.getConfigSync.bind(this),t.getTableIdSync=()=>this.getResolvedTableId(),t.getVirtualScrollConfigSync=this.getVirtualScrollConfigSync.bind(this),t.calculateVisibleRange=this.calculateVisibleRange.bind(this),t.registerSpanSync=this.registerSpanSync.bind(this),t.unregisterSpanSync=this.unregisterSpanSync.bind(this),t.getSpanSync=this.getSpanSync.bind(this),t.isCoveredSync=this.isCoveredSync.bind(this),t.isVisualLastRowSync=this.isVisualLastRowSync.bind(this),t.registerSeparatorSync=this.registerSeparatorSync.bind(this),t.unregisterSeparatorSync=this.unregisterSeparatorSync.bind(this),t.isVisualLastRowBeforeSeparatorSync=this.isVisualLastRowBeforeSeparatorSync.bind(this),t.hasRowspanSync=this.hasRowspanSync.bind(this),t.registerCellClassSync=this.registerCellClassSync.bind(this),t.unregisterCellClassSync=this.unregisterCellClassSync.bind(this),t.getCellClassSync=this.getCellClassSync.bind(this),t.registerUseFrameSync=this.registerUseFrameSync.bind(this),t.unregisterUseFrameSync=this.unregisterUseFrameSync.bind(this),t.hasUseFrameInRowSync=this.hasUseFrameInRowSync.bind(this),Array.isArray(this.rows)&&(this.rowCount=this.rows.length,this.pushRowsToChildren(this.rows))}componentDidLoad(){Array.isArray(this.rows)&&this.pushRowsToChildren(this.rows),i((()=>{const t=this.el.shadowRoot?.querySelector(".sd-table__scroll-container");if(!t)return;let s=!1;this.onScroll=()=>{const e=t.scrollLeft,i=e>0,h=e+t.clientWidth<t.scrollWidth;this.scrolledLeft===i&&this.scrolledRight===h||(this.scrolledLeft=i,this.scrolledRight=h,this.refreshChildrenConfig()),this.useVirtualScroll&&!s&&(s=!0,requestAnimationFrame((()=>{s=!1,this.propagateVirtualUpdate()})))},this.scrollContainer=t,t.addEventListener("scroll",this.onScroll,{passive:!0}),this.onScroll(),this.useVirtualScroll&&this.propagateVirtualUpdate()})),this.syncNoDataContentObserver()}disconnectedCallback(){this.scrollContainer&&this.onScroll&&this.scrollContainer.removeEventListener("scroll",this.onScroll),this.noDataContentResizeObserver?.disconnect(),this.noDataContentResizeObserver=void 0}syncNoDataContentObserver(){if(0!==this.rowCount||this.isLoading)return this.noDataContentResizeObserver?.disconnect(),this.noDataContentResizeObserver=void 0,void(this.noDataBodyHeight=60);this.observeNoDataContentHeight()}observeNoDataContentHeight(){if("undefined"==typeof ResizeObserver)return;const t=this.noDataContentEl;if(!t)return;this.noDataContentResizeObserver?.disconnect(),this.noDataContentResizeObserver=new ResizeObserver((()=>{const s=Math.ceil(t.scrollHeight),e=Math.max(60,s);e!==this.noDataBodyHeight&&(this.noDataBodyHeight=e)})),this.noDataContentResizeObserver.observe(t);const s=Math.ceil(t.scrollHeight);this.noDataBodyHeight=Math.max(60,s)}queryChildEl(t){return this.el.querySelector(t)??this.el.shadowRoot?.querySelector(t)??null}queryAllTr(){return[...Array.from(this.el.querySelectorAll("sd-tr")),...Array.from(this.el.shadowRoot?.querySelectorAll("sd-tr")??[])]}pushRowsToChildren(t){const s=this.queryChildEl("sd-tbody");s&&(s.rows=t);const e=this.queryChildEl("sd-thead");e&&(e.rows=t)}handleStructureSlotChange=()=>{Array.isArray(this.rows)&&this.pushRowsToChildren(this.rows),this.refreshChildrenConfig()};refreshChildrenSelection(){const t=this.queryChildEl("sd-thead");t?.refreshSelection?.(),this.queryAllTr().forEach((t=>t?.refreshSelection?.()))}refreshChildrenConfig(){const t=this.queryChildEl("sd-thead");t?.refreshConfig?.(),this.queryAllTr().forEach((t=>t?.refreshConfig?.()))}maybeEmitVirtualReachEnd(t,s){const e=Math.max(1,this.virtualEndThreshold);s>=Math.max(0,this.rowCount-e)&&this.lastReachEndNotifiedRowCount!==this.rowCount&&(this.lastReachEndNotifiedRowCount=this.rowCount,this.sdVirtualReachEnd.emit({from:t,to:s,rowCount:this.rowCount,threshold:e}))}propagateVirtualUpdate(t=!1){if(!this.scrollContainer||!this.useVirtualScroll)return;const s=this.toFiniteNumber(this.scrollContainer.scrollTop,0),e=this.toFiniteNumber(this.scrollContainer.clientHeight,0),{start:i,end:h}=this.calculateVisibleRange(s,e);if(!Number.isFinite(i)||!Number.isFinite(h))return;const a=this.vsStart!==i||this.vsEnd!==h;if(!a&&!t)return;this.vsStart=i,this.vsEnd=h;const n=i*this.effectiveRowHeight,r=Math.max(0,(this.rowCount-h)*this.effectiveRowHeight),l=this.queryChildEl("sd-tbody");l?.setSpacersSync?.(n,r),a&&this.sdVirtualUpdate.emit({from:i,to:h}),this.maybeEmitVirtualReachEnd(i,h)}getVirtualScrollConfigSync(){return{useVirtualScroll:this.useVirtualScroll,rowHeight:this.effectiveRowHeight,virtualBuffer:this.virtualBuffer,vsStart:this.vsStart,vsEnd:this.vsEnd,rowCount:this.rowCount}}getConfigSync(){return{columns:this.columns,selectable:this.selectable,resizable:this.resizable,stickyColumn:this.stickyColumn,stickyHeader:this.stickyHeader,scrolledLeft:this.scrolledLeft,scrolledRight:this.scrolledRight,columnWidths:this.columnWidths,dense:this.dense}}registerUseFrameSync(t,s){if(null==t||""===s)return;let e=this.useFrameRegistry.get(t);e||(e=new Set,this.useFrameRegistry.set(t,e)),e.add(s)}unregisterUseFrameSync(t,s){if(null==t||""===s)return;const e=this.useFrameRegistry.get(t);e&&(e.delete(s),0===e.size&&this.useFrameRegistry.delete(t))}hasUseFrameInRowSync(t){const s=this.useFrameRegistry.get(t);return null!=s&&s.size>0}isRowSelectedSync(t){return Array.from(this.innerSelected).some((s=>s[this.rowKey??"id"]===t[this.rowKey??"id"]))}async isRowSelected(t){return this.isRowSelectedSync(t)}updateRowSelectSync(t){const s=Array.from(this.innerSelected),e=this.isRowSelectedSync(t)?s.filter((s=>s[this.rowKey??"id"]!==t[this.rowKey??"id"])):[...s,t];e.length!==s.length&&(this.innerSelected=new Set(e),this.selected=Array.from(this.innerSelected),this.sdSelectChange.emit(Array.from(this.innerSelected)),this.refreshChildrenSelection())}async updateRowSelect(t){this.updateRowSelectSync(t)}toggleSelectAllSync(t,s){if(t){const t=new Set([...s]);this.innerSelected=new Set([...this.innerSelected,...t])}else{const t=s.map((t=>t[this.rowKey??"id"]));this.innerSelected=new Set([...this.innerSelected].filter((s=>!t.includes(s[this.rowKey??"id"]))))}this.selected=Array.from(this.innerSelected),this.sdSelectChange.emit(Array.from(this.innerSelected)),this.refreshChildrenSelection()}async toggleSelectAll(t,s){this.toggleSelectAllSync(t,s)}getIsAllCheckedSync(t){const s=t.length,e=t.filter((t=>Array.from(this.innerSelected).some((s=>s[this.rowKey??"id"]===t[this.rowKey??"id"])))).length;return 0!==e&&(e===s||null)}async getIsAllChecked(t){return this.getIsAllCheckedSync(t)}changePage(t){this.useInternalPagination?(this.currentPage=t,this.sdPageChange.emit(this.currentPage),this.updateRowsVisibility()):this.sdPageChange.emit(t)}updateRowsVisibility(){this.queryAllTr().forEach((t=>t?.updateVisibility?.()))}changeRowsPerPage(t){const s=null!=t&&""!==t?Number(t):0;if(!this.useInternalPagination)return void this.sdRowsPerPageChange.emit(s);this.innerRowsPerPage=s;const e=Math.max(1,Math.ceil(this.rowCount/s));this.currentPage>e&&(this.currentPage=e),this.sdRowsPerPageChange.emit(s),this.updateRowsVisibility()}get lastPageNumber(){if(this.useInternalPagination)return Math.max(1,Math.ceil(this.rowCount/this.innerRowsPerPage));const{lastPage:t,rowsPerPage:s=10}=this.pagination||{};return t??Math.max(1,Math.ceil(this.rowCount/s))}handleResize(t,s,e=!1){if("undefined"==typeof document)return;const i=s.clientX,h=this.columnWidths[t],a=s=>{const a=this.columns[t];if(null==a)return;const n=a.maxWidth||9999,r=s.clientX-i,l=Math.min(Math.max(h+(e?-r:r),a.minWidth||50),n);this.columnWidths=this.columnWidths.map(((s,e)=>e===t?l:s));const o=this.queryChildEl("sd-thead");o?.setColumnWidths?.(this.columnWidths),this.queryAllTr().forEach((t=>t?.setColumnWidths?.(this.columnWidths)));const d=this.stickyColumn?.right||0,c=this.columns.filter((t=>!1!==t.visible)).length;d>0&&t===c-d&&requestAnimationFrame((()=>{this.onScroll?.()}))},n=()=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",n)};document.addEventListener("mousemove",a),document.addEventListener("mouseup",n)}getStickyStyleSync(t){const s=this.columnWidths.slice(0,t).reduce(((t,s)=>t+s),this.selectable?52:0),e=this.columnWidths.filter(((s,e)=>e>=this.columns.filter((t=>!1!==t.visible)).length-(this.stickyColumn?.right||0)&&e>t)).reduce(((t,s)=>t+s),0),i=this.columns.filter((t=>!1!==t.visible))[t],h={"--sticky-left-offset":`${s}px`,"--sticky-right-offset":`${e}px`};return i?.autoWidth||(h.width=`${this.columnWidths[t]}px`,h.minWidth=`${this.columnWidths[t]}px`,h.maxWidth=`${this.columnWidths[t]}px`),h}async getStickyStyle(t){return this.getStickyStyleSync(t)}spanKey(t,s){return`${t}::${s}`}requestAllTrUpdate(){this.queryAllTr().forEach((t=>{"function"==typeof t.bumpSpansVersion?t.bumpSpansVersion():h(t)}))}registerSpanSync(t,s,e,i){if(null==t||""===s)return;const h=Math.max(1,Math.floor(e||1)),a=Math.max(1,Math.floor(i||1)),n=this.spanKey(t,s),r=this.spanRegistry.get(n);if(1===h&&1===a){if(!r)return;return this.spanRegistry.delete(n),void this.requestAllTrUpdate()}r&&r.rowspan===h&&r.colspan===a||(this.spanRegistry.set(n,{rowspan:h,colspan:a}),this.requestAllTrUpdate())}unregisterSpanSync(t,s){if(null==t||""===s)return;const e=this.spanKey(t,s);this.spanRegistry.has(e)&&(this.spanRegistry.delete(e),this.requestAllTrUpdate())}getSpanSync(t,s){return this.spanRegistry.get(this.spanKey(t,s))}registerCellClassSync(t,s,e){if(null==t||""===s)return;const i=this.spanKey(t,s),h=(e??"").trim();""!==h?this.cellClassRegistry.set(i,h):this.cellClassRegistry.delete(i)}unregisterCellClassSync(t,s){null!=t&&""!==s&&this.cellClassRegistry.delete(this.spanKey(t,s))}getCellClassSync(t,s){return this.cellClassRegistry.get(this.spanKey(t,s))}hasRowspanSync(){for(const t of this.spanRegistry.values())if(t.rowspan>1)return!0;return!1}isCoveredSync(t,s,e){if(0===this.spanRegistry.size)return!1;const i=e.filter((t=>!1!==t.visible));for(let e=0;e<s;e++){const h=i[e];if(null==h)continue;const a=this.spanRegistry.get(this.spanKey(t,"string"==typeof h.field?h.field:h.name));if(a&&e+a.colspan>s)return!0}const h=this.resolveRowIndex(t);if(null==h)return!1;for(const[t,e]of this.spanRegistry){if(e.rowspan<=1)continue;const a=t.indexOf("::");if(a<0)continue;const n=t.slice(0,a),r=t.slice(a+2),l=this.resolveRowIndex(n);if(null==l)continue;if(l>=h)continue;if(l+e.rowspan<=h)continue;const o=i.findIndex((t=>("string"==typeof t.field?t.field:t.name)===r));if(!(o<0)&&o<=s&&o+e.colspan>s)return!0}return!1}resolveVisualBottom(t,s){const e=this.resolveRowIndex(t);if(null==e)return null;const i=this.spanRegistry.get(this.spanKey(t,s));return e+Math.max(1,i?.rowspan??1)-1}isVisualLastRowSync(t,s){if(this.rowCount<=0)return!1;const e=this.resolveVisualBottom(t,s);if(null==e)return!1;const i=this.getPaginationInfoSync();return e===(i?Math.min(i.endIndex-1,this.rowCount-1):this.rowCount-1)}registerSeparatorSync(t){const s=this.resolveRowIndex(t);null!=s&&this.separatorPrevIndices.add(s)}unregisterSeparatorSync(t){const s=this.resolveRowIndex(t);null!=s&&this.separatorPrevIndices.delete(s)}isVisualLastRowBeforeSeparatorSync(t,s){if(0===this.separatorPrevIndices.size)return!1;const e=this.resolveVisualBottom(t,s);return null!=e&&this.separatorPrevIndices.has(e)}setRowCountSync(t){const s=Math.max(0,Math.floor(this.toFiniteNumber(t,0)));s!==this.rowCount&&(this.lastReachEndNotifiedRowCount=-1),this.rowCount=s,this.useVirtualScroll&&this.propagateVirtualUpdate(!0)}async setRowCount(t){this.setRowCountSync(t)}calculateVisibleRange(t,s){const e=Math.max(1,this.toFiniteNumber(this.effectiveRowHeight,40)),i=Math.max(0,Math.floor(this.toFiniteNumber(this.virtualBuffer,5))),h=Math.max(0,this.toFiniteNumber(t,0)),a=Math.max(0,this.toFiniteNumber(s,0)),n=Math.max(0,Math.floor(this.toFiniteNumber(this.rowCount,0))),r=Math.floor(h/e),l=Math.ceil(a/e);return{start:Math.max(0,r-i),end:Math.min(n,r+l+i)}}getPaginationInfoSync(){if(!this.useInternalPagination||!this.pagination)return null;const t=(this.currentPage-1)*this.innerRowsPerPage;return{startIndex:t,endIndex:t+this.innerRowsPerPage,currentPage:this.currentPage,rowsPerPage:this.innerRowsPerPage}}async getPaginationInfo(){return this.getPaginationInfoSync()}getVirtualScrollRangeSync(){return this.useVirtualScroll&&this.vsEnd>0?{from:this.vsStart,to:this.vsEnd}:null}renderAutoRows(){if(this.useVirtualScroll)return null;const t=this.rows??[],s=this.getPaginationInfoSync(),e=s?.startIndex??0;return(s?t.slice(s.startIndex,s.endIndex):t).map(((t,s)=>{const i=e+s;return a("sd-tr",{key:i,"row-key":String(i),row:t})}))}get tableClasses(){return["sd-table",this.stickyHeader&&"sd-table--sticky-header",this.selectable&&"sd-table--selectable",this.resizable&&"sd-table--resizable",(this.selectable||(this.stickyColumn?.left??0)>0||(this.stickyColumn?.right??0)>0)&&"sd-table--sticky-column",this.scrolledLeft&&"sd-table--scrolled-left",this.scrolledRight&&"sd-table--scrolled-right",0===this.rowCount&&!this.isLoading&&"sd-table--no-data"].filter(Boolean).join(" ")}render(){const t=this.getResolvedTableId(),s=0===this.rowCount&&!this.isLoading,e=s?`max(${this.height||"96px"}, ${36+this.noDataBodyHeight}px)`:this.height||"100%";return a(n,{key:"02d716bdac3832710bf58d63741aeeb4b04d434b",style:{"--table-radius":`${c}px`,"--table-border-color":d.color,"--table-border-width":`${d.width}px`,"--table-body-font-family":o.fontFamily,"--table-body-font-weight":o.fontWeight,"--table-body-font-size":`${o.fontSize}px`,"--table-body-line-height":`${o.lineHeight}px`,"--table-body-text-decoration":o.textDecoration}},a("div",{key:"88faad346e032ca727375889aa0552a330f5799a",class:"sd-table__container",style:{"--table-width":this.width,"--table-height":e,"--table-container-height":`calc(${e} - ${this.pagination&&this.rowCount>0&&!this.useVirtualScroll?48:0}px)`}},a("div",{key:"783934f349e0da5bab77cbb44cc12f0dfeb9ec71",class:{"sd-table__wrapper":!0,"sd-table__wrapper--radius-use-top":"useTop"===this.radius}},a("div",{key:"d3a76ad0e853c6adf16df633c0e0b7f5bb580f24",class:{"sd-table__scroll-container":!0,"sd-table__scroll-container--loading":this.isLoading,"sd-table__scroll-container--no-data":s}},this.isLoading&&a("div",{key:"cc77ce58ff0eebf3fc1d7dd9dbf11578f94d4dd1",class:"sd-table__loading",style:{top:`${this.loadingScrollTop}px`}},a("sd-circle-progress",{key:"bda7ed774342089a23d13b49a506b04527026275",indeterminate:!0})),s&&a(a.Fragment,null,a("div",{key:"f2ce89d0ae9eefe0f0f8509e477756cb74dbef86",class:"sd-table__no-data-header-overlay"}),a("div",{key:"84d739563123d0f0fc33166b1a6e80021ba06e1c",class:"sd-table__no-data"},a("div",{key:"3507f718a25b79c44fdf283fb41356ab72f2a384",class:"sd-table__no-data-content",ref:t=>{this.noDataContentEl=t,t&&this.syncNoDataContentObserver()}},a("slot",{key:"818129819b2ff4a6f9fc1224dc59a9aa5861296d",name:"no-data"},a("span",{key:"c03cfb713e6dadd5ab4c60d7d27fd502d7aa9348"},this.resolvedNoDataLabel))))),a("table",{key:"8864714a828069985bac6535bc40cbb043dfcb28",class:this.tableClasses},this.autoThead?a("slot",{name:`${t}-head`,onSlotchange:this.handleStructureSlotChange},a("sd-thead",{rows:this.rows??[]})):a("slot",{name:`${t}-head`,onSlotchange:this.handleStructureSlotChange}),this.autoTbody?a("slot",{name:`${t}-body`,onSlotchange:this.handleStructureSlotChange},a("sd-tbody",{rows:this.rows??[]},this.renderAutoRows())):a("slot",{name:`${t}-body`,onSlotchange:this.handleStructureSlotChange})))),this.pagination&&this.pagination.rowsPerPage>0&&this.rowCount>0&&!this.useVirtualScroll&&a("div",{key:"bdac4b4d551152ec7ee0cdc31bfb992748836928",class:"sd-table__pagination"},a("sd-pagination",{key:"2c60fff7f8ac3a3bd22da2173b8a9187bb686ddf",currentPage:this.useInternalPagination?this.currentPage:this.pagination.page,lastPage:this.useInternalPagination?this.lastPageNumber:this.pagination.lastPage,onSdPageChange:t=>this.changePage(t.detail)}),this.useRowsPerPageSelect&&a("sd-select",{key:"7a662f58e13c15e705341773570f899f503f12c0",value:this.useInternalPagination?this.innerRowsPerPage:this.pagination.rowsPerPage,options:this.rowsPerPageOption,width:"128px",emitValue:!0,onSdUpdate:t=>{this.isRowsPerPageValue(t.detail)&&this.changeRowsPerPage(t.detail)}}))))}static get watchers(){return{isLoading:[{handleIsLoadingChange:0}],useVirtualScroll:[{handleUseVirtualScrollChange:0}],columns:[{handleColumnsChange:0}],rows:[{handleRowsChange:0}],rowKey:[{handleRowKeyChange:0}],tableId:[{handleTableIdChange:0}],noDataLabel:[{handleNoDataLabelChange:0}],selectable:[{handleConfigChange:0}],resizable:[{handleConfigChange:0}],stickyColumn:[{handleConfigChange:0}],stickyHeader:[{handleConfigChange:0}],dense:[{handleConfigChange:0}],selected:[{handleSelectedChange:0}],pagination:[{handlePaginationChange:0}]}}};b.style="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%)}";export{b as sd_table}
@@ -1 +0,0 @@
1
- var e={table:{header:{height:"36",paddingX:"16",gap:"4",bg:"#F5FAFF",typography:{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",fontWeight:"500",fontSize:"12",lineHeight:"20",textDecoration:"none"},resizingBar:{color:"#CCCCCC",height:"16"}},body:{default:{height:"44",paddingY:"8"},dense:{height:"32",paddingY:"6"},paddingX:"16",typography:{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",fontWeight:"400",fontSize:"12",lineHeight:"20",textDecoration:"none"}},border:{color:"#E1E1E1",width:"1"},content:{gap:"8"},radius:"8",keyValue:{body:{padding:"8"},height:"44",search:{paddingX:"32",bg:"#F9F9F9"}},separator:{color:"#EEEEEE",Width:"6"}}};export{e as t}
@@ -1 +0,0 @@
1
- import{r as t,a as i,f as s,h as e,H as n}from"./p-0U6dRjlq.js";import{T as h}from"./p-sZMi_32I.js";const a=class{constructor(i){t(this,i)}get el(){return i(this)}field;rowKey;align;rowspan;colspan;sdClass;dividerLeft=!1;dividerRight=!1;useFrame=!1;handleFieldChange(t,i){this.syncSlotName(),this.syncSpanRegistration(),this.syncCellClassRegistration(i)}handleRowKeyChange(t,i){this.syncSlotName(),this.syncSpanRegistration(),this.syncCellClassRegistration(void 0,i)}handleSpanChange(){this.syncSpanRegistration()}handleSdClassChange(){this.syncCellClassRegistration()}handleDividerChange(){this.syncCellClassRegistration()}handleUseFieldChange(){this.syncUseFieldRegistration(),this.requestParentTrUpdate()}componentWillLoad(){this.syncSlotName(),this.syncSpanRegistration(),this.syncCellClassRegistration(),this.syncUseFieldRegistration();const t=this.el.parentElement;"sd-tr"===t?.tagName?.toLowerCase()&&s(t)}componentDidLoad(){this.syncSlotName(),this.syncSpanRegistration(),this.syncCellClassRegistration(),this.syncUseFieldRegistration()}connectedCallback(){this.syncSpanRegistration(),this.syncCellClassRegistration(),this.syncUseFieldRegistration()}disconnectedCallback(){const t=this.findTable();null!=t&&""!==this.field&&null!=this.rowKey&&(t.unregisterSpanSync?.(String(this.rowKey),this.field),t.unregisterCellClassSync?.(String(this.rowKey),this.field),t.unregisterUseFrameSync?.(String(this.rowKey),this.field),this.requestParentTrUpdate())}findTable(){return this.el.closest("sd-table")}requestParentTrUpdate(){const t=this.el.parentElement;"sd-tr"===t?.tagName?.toLowerCase()&&("function"==typeof t.bumpSpansVersion?t.bumpSpansVersion():s(t))}syncSpanRegistration(){const t=this.findTable();if(null==t?.registerSpanSync||""===this.field||null==this.rowKey)return;const i=Math.max(1,Math.floor(Number(this.rowspan)||1)),s=Math.max(1,Math.floor(Number(this.colspan)||1));t.registerSpanSync(String(this.rowKey),this.field,i,s),this.requestParentTrUpdate()}syncCellClassRegistration(t,i){const s=this.findTable();if(!s)return;const e=t??this.field,n=i??(null!=this.rowKey?String(this.rowKey):void 0);if(""!==e&&null!=n&&s.unregisterCellClassSync?.(n,e),!s.registerCellClassSync||""===this.field||null==this.rowKey)return;const h=[this.sdClass,this.dividerLeft&&"td--divider-left",this.dividerRight&&"td--divider-right"].filter(Boolean).join(" ")||void 0;s.registerCellClassSync(String(this.rowKey),this.field,h),this.requestParentTrUpdate()}syncUseFieldRegistration(){const t=this.findTable();t&&""!==this.field&&null!=this.rowKey&&(this.useFrame?t.registerUseFrameSync?.(String(this.rowKey),this.field):t.unregisterUseFrameSync?.(String(this.rowKey),this.field))}syncSlotName(){const t=this.el.closest("sd-table"),i=t?.getTableIdSync?.(),s=t?.getAttribute(h),e=(null!=i&&""!==i&&"undefined"!==i?i:null)??(null!=s&&""!==s&&"undefined"!==s?s:null)??"";""!==this.field&&void 0!==this.rowKey&&""!==e&&this.el.setAttribute("slot",`${e}-${this.field}-${this.rowKey}`)}render(){return e(n,{key:"7d51ea5f02ba2df099f4440be26c2f0be8a73a6b",class:{[`align-${this.align}`]:Boolean(this.align)}},e("slot",{key:"9a6a634e2bcd206ec9099c6be738c3853d0cbebf"}))}static get watchers(){return{field:[{handleFieldChange:0}],rowKey:[{handleRowKeyChange:0}],rowspan:[{handleSpanChange:0}],colspan:[{handleSpanChange:0}],sdClass:[{handleSdClassChange:0}],dividerLeft:[{handleDividerChange:0}],dividerRight:[{handleDividerChange:0}],useFrame:[{handleUseFieldChange:0}]}}};a.style="sd-td *{box-sizing:border-box}sd-td{display:contents}sd-td.align-left{text-align:left}sd-td.align-center{text-align:center}sd-td.align-right{text-align:right}";export{a as sd_td}