@sellmate/design-system 0.0.35 → 0.0.36

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 (149) hide show
  1. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  2. package/dist/cjs/sd-button_15.cjs.entry.js +13 -13
  3. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  4. package/dist/cjs/sd-date-picker.cjs.entry.js +2 -2
  5. package/dist/cjs/sd-date-range-picker.cjs.entry.js +2 -2
  6. package/dist/cjs/sd-loading-spinner.cjs.entry.js +1 -1
  7. package/dist/cjs/sd-popover.cjs.entry.js +2 -2
  8. package/dist/cjs/sd-progress.cjs.entry.js +2 -2
  9. package/dist/cjs/sd-select-multiple.cjs.entry.js +2 -2
  10. package/dist/cjs/sd-select-option-group.cjs.entry.js +3 -3
  11. package/dist/cjs/sd-table-backup.cjs.entry.js +12 -6
  12. package/dist/cjs/sd-table-backup.entry.cjs.js.map +1 -1
  13. package/dist/cjs/sd-tag.cjs.entry.js +1 -1
  14. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  15. package/dist/collection/collection-manifest.json +1 -1
  16. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  17. package/dist/collection/components/sd-card/sd-card.js +1 -1
  18. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  19. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +2 -2
  20. package/dist/collection/components/sd-guide/sd-guide.js +3 -3
  21. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  22. package/dist/collection/components/sd-input/sd-input.js +2 -2
  23. package/dist/collection/components/sd-loading-spinner/sd-loading-spinner.js +1 -1
  24. package/dist/collection/components/sd-pagination/sd-pagination.js +2 -2
  25. package/dist/collection/components/sd-popover/sd-popover.js +2 -2
  26. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  27. package/dist/collection/components/sd-progress/sd-progress.js +2 -2
  28. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +1 -1
  29. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +2 -2
  30. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +3 -3
  31. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +1 -1
  32. package/dist/collection/components/sd-table/sd-td/sd-td.js +2 -2
  33. package/dist/collection/components/sd-table/sd-th/sd-th.js +1 -1
  34. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +1 -1
  35. package/dist/collection/components/sd-table-backup/sd-table-backup.css +249 -0
  36. package/dist/collection/components/sd-table-backup/sd-table-backup.js +709 -0
  37. package/dist/collection/components/sd-table-backup/sd-table-backup.js.map +1 -0
  38. package/dist/collection/components/sd-tag/sd-tag.js +1 -1
  39. package/dist/components/{p-CSnKPDQz.js → p-0B7EuAJt.js} +5 -5
  40. package/dist/components/{p-CSnKPDQz.js.map → p-0B7EuAJt.js.map} +1 -1
  41. package/dist/components/{p-BeBw4eSm.js → p-18thvuHk.js} +3 -3
  42. package/dist/components/{p-BeBw4eSm.js.map → p-18thvuHk.js.map} +1 -1
  43. package/dist/components/{p-BEq3cGoC.js → p-C075_t2h.js} +3 -3
  44. package/dist/components/{p-BEq3cGoC.js.map → p-C075_t2h.js.map} +1 -1
  45. package/dist/components/{p-CrmdI2cD.js → p-C79lmNgp.js} +3 -3
  46. package/dist/components/{p-CrmdI2cD.js.map → p-C79lmNgp.js.map} +1 -1
  47. package/dist/components/{p-ybbnPl4X.js → p-Ce6LhsfH.js} +7 -7
  48. package/dist/components/{p-ybbnPl4X.js.map → p-Ce6LhsfH.js.map} +1 -1
  49. package/dist/components/{p-B8lMIjWB.js → p-CzYhjjIE.js} +7 -7
  50. package/dist/components/{p-B8lMIjWB.js.map → p-CzYhjjIE.js.map} +1 -1
  51. package/dist/components/{p-5yzkkdZ2.js → p-D2x4IHr5.js} +3 -3
  52. package/dist/components/{p-5yzkkdZ2.js.map → p-D2x4IHr5.js.map} +1 -1
  53. package/dist/components/{p-ntW8MKYi.js → p-D7IsBL9J.js} +5 -5
  54. package/dist/components/{p-ntW8MKYi.js.map → p-D7IsBL9J.js.map} +1 -1
  55. package/dist/components/{p-D-s8kK6P.js → p-DHI6oZcr.js} +3 -3
  56. package/dist/components/{p-D-s8kK6P.js.map → p-DHI6oZcr.js.map} +1 -1
  57. package/dist/components/{p-CqpahWAy.js → p-DNEKh1qk.js} +3 -3
  58. package/dist/components/{p-CqpahWAy.js.map → p-DNEKh1qk.js.map} +1 -1
  59. package/dist/components/{p-BEDQ2CIp.js → p-DTUSoHK4.js} +5 -5
  60. package/dist/components/{p-BEDQ2CIp.js.map → p-DTUSoHK4.js.map} +1 -1
  61. package/dist/components/{p-Du8-vyL0.js → p-DpcL5xdv.js} +3 -3
  62. package/dist/components/{p-Du8-vyL0.js.map → p-DpcL5xdv.js.map} +1 -1
  63. package/dist/components/{p-GNK9vrin.js → p-InrZhOLL.js} +3 -3
  64. package/dist/components/{p-GNK9vrin.js.map → p-InrZhOLL.js.map} +1 -1
  65. package/dist/components/{p-BzdIpn5T.js → p-kLlPK7H2.js} +4 -4
  66. package/dist/components/{p-BzdIpn5T.js.map → p-kLlPK7H2.js.map} +1 -1
  67. package/dist/components/sd-badge.js +1 -1
  68. package/dist/components/sd-button.js +1 -1
  69. package/dist/components/sd-card.js +1 -1
  70. package/dist/components/sd-checkbox.js +1 -1
  71. package/dist/components/sd-date-picker.js +5 -5
  72. package/dist/components/sd-date-range-picker.js +5 -5
  73. package/dist/components/sd-guide.js +6 -6
  74. package/dist/components/sd-icon.js +1 -1
  75. package/dist/components/sd-input.js +1 -1
  76. package/dist/components/sd-loading-spinner.js +1 -1
  77. package/dist/components/sd-pagination.js +1 -1
  78. package/dist/components/sd-popover.js +4 -4
  79. package/dist/components/sd-portal.js +1 -1
  80. package/dist/components/sd-progress.js +2 -2
  81. package/dist/components/sd-select-multiple-group.js +5 -5
  82. package/dist/components/sd-select-multiple.js +7 -7
  83. package/dist/components/sd-select-option-group.js +1 -1
  84. package/dist/components/sd-select-option.js +1 -1
  85. package/dist/components/sd-select.js +1 -1
  86. package/dist/components/sd-table-backup.js +22 -16
  87. package/dist/components/sd-table-backup.js.map +1 -1
  88. package/dist/components/sd-table.js +12 -12
  89. package/dist/components/sd-tag.js +1 -1
  90. package/dist/components/sd-tbody.js +1 -1
  91. package/dist/components/sd-td.js +2 -2
  92. package/dist/components/sd-th.js +1 -1
  93. package/dist/components/sd-tooltip.js +1 -1
  94. package/dist/components/sd-tr.js +1 -1
  95. package/dist/design-system/design-system.esm.js +1 -1
  96. package/dist/design-system/{p-8b60af66.entry.js → p-0e24195b.entry.js} +2 -2
  97. package/dist/design-system/{p-01f44c51.entry.js → p-360dd6ab.entry.js} +2 -2
  98. package/dist/design-system/{p-88745dfe.entry.js → p-3e46bf2b.entry.js} +2 -2
  99. package/dist/design-system/p-51c4ae08.entry.js +2 -0
  100. package/dist/design-system/{p-d74bfbe4.entry.js → p-531260cb.entry.js} +2 -2
  101. package/dist/design-system/{p-7e18d4cf.entry.js → p-675d1b1c.entry.js} +2 -2
  102. package/dist/design-system/{p-78f90517.entry.js → p-9099eb05.entry.js} +2 -2
  103. package/dist/design-system/{p-a72c4b0c.entry.js → p-a83759ba.entry.js} +2 -2
  104. package/dist/design-system/p-c0461df6.entry.js +2 -0
  105. package/dist/design-system/p-c0461df6.entry.js.map +1 -0
  106. package/dist/design-system/p-c9109ae0.entry.js +2 -0
  107. package/dist/design-system/p-d8c1ce0a.entry.js +2 -0
  108. package/dist/design-system/{p-985be35d.entry.js.map → p-d8c1ce0a.entry.js.map} +1 -1
  109. package/dist/design-system/p-f4a737de.entry.js +2 -0
  110. package/dist/design-system/{p-d003ee3d.entry.js → p-ff7b8ecf.entry.js} +2 -2
  111. package/dist/design-system/sd-table-backup.entry.esm.js.map +1 -1
  112. package/dist/esm/sd-badge.entry.js +1 -1
  113. package/dist/esm/sd-button_15.entry.js +13 -13
  114. package/dist/esm/sd-card.entry.js +1 -1
  115. package/dist/esm/sd-date-picker.entry.js +2 -2
  116. package/dist/esm/sd-date-range-picker.entry.js +2 -2
  117. package/dist/esm/sd-loading-spinner.entry.js +1 -1
  118. package/dist/esm/sd-popover.entry.js +2 -2
  119. package/dist/esm/sd-progress.entry.js +2 -2
  120. package/dist/esm/sd-select-multiple.entry.js +2 -2
  121. package/dist/esm/sd-select-option-group.entry.js +3 -3
  122. package/dist/esm/sd-table-backup.entry.js +12 -6
  123. package/dist/esm/sd-table-backup.entry.js.map +1 -1
  124. package/dist/esm/sd-tag.entry.js +1 -1
  125. package/dist/esm/sd-td.entry.js +2 -2
  126. package/dist/types/components.d.ts +2 -2
  127. package/hydrate/index.js +46 -40
  128. package/hydrate/index.mjs +46 -40
  129. package/package.json +5 -3
  130. package/dist/collection/components/sd-table/sd-table-backup.js +0 -2743
  131. package/dist/collection/components/sd-table/sd-table-backup.js.map +0 -1
  132. package/dist/design-system/p-49f98f09.entry.js +0 -2
  133. package/dist/design-system/p-671a08a6.entry.js +0 -2
  134. package/dist/design-system/p-671a08a6.entry.js.map +0 -1
  135. package/dist/design-system/p-6a624672.entry.js +0 -2
  136. package/dist/design-system/p-985be35d.entry.js +0 -2
  137. package/dist/design-system/p-ef5ffaa2.entry.js +0 -2
  138. /package/dist/design-system/{p-8b60af66.entry.js.map → p-0e24195b.entry.js.map} +0 -0
  139. /package/dist/design-system/{p-01f44c51.entry.js.map → p-360dd6ab.entry.js.map} +0 -0
  140. /package/dist/design-system/{p-88745dfe.entry.js.map → p-3e46bf2b.entry.js.map} +0 -0
  141. /package/dist/design-system/{p-ef5ffaa2.entry.js.map → p-51c4ae08.entry.js.map} +0 -0
  142. /package/dist/design-system/{p-d74bfbe4.entry.js.map → p-531260cb.entry.js.map} +0 -0
  143. /package/dist/design-system/{p-7e18d4cf.entry.js.map → p-675d1b1c.entry.js.map} +0 -0
  144. /package/dist/design-system/{p-78f90517.entry.js.map → p-9099eb05.entry.js.map} +0 -0
  145. /package/dist/design-system/{p-a72c4b0c.entry.js.map → p-a83759ba.entry.js.map} +0 -0
  146. /package/dist/design-system/{p-49f98f09.entry.js.map → p-c9109ae0.entry.js.map} +0 -0
  147. /package/dist/design-system/{p-6a624672.entry.js.map → p-f4a737de.entry.js.map} +0 -0
  148. /package/dist/design-system/{p-d003ee3d.entry.js.map → p-ff7b8ecf.entry.js.map} +0 -0
  149. /package/dist/types/components/{sd-table → sd-table-backup}/sd-table-backup.d.ts +0 -0
@@ -0,0 +1,709 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ export class SdTable {
3
+ el;
4
+ columns;
5
+ rows;
6
+ selected = new Set();
7
+ rowKey = 'id';
8
+ selectable = false;
9
+ resizable = false;
10
+ width;
11
+ height;
12
+ stickyHeader = false;
13
+ stickyColumn = { left: 0, right: 0 };
14
+ noDataLabel = '데이터가 없습니다.';
15
+ isLoading = false;
16
+ pagination;
17
+ bodyCellRenderer;
18
+ useInternalPagination = false;
19
+ useRowsPerPageSelect = false;
20
+ rowsPerPageOption = [
21
+ { label: '10개씩 보기', value: 10 },
22
+ { label: '25개씩 보기', value: 25 },
23
+ { label: '50개씩 보기', value: 50 },
24
+ { label: '100개씩 보기', value: 100 },
25
+ ];
26
+ sdSelectChange;
27
+ sdPageChange;
28
+ sdRowsPerPageChange;
29
+ currentPage = this.pagination?.page || 1;
30
+ innerRows = [];
31
+ innerSelected = new Set();
32
+ columnWidths = [];
33
+ scrolledLeft = false;
34
+ scrolledRight = false;
35
+ handleColumnsChange(newCols) {
36
+ this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
37
+ }
38
+ handleRowsChange(newRows) {
39
+ this.innerRows = [...newRows];
40
+ }
41
+ handleSelectedChange(newSelected) {
42
+ this.innerSelected = new Set(newSelected);
43
+ }
44
+ handlePaginationChange(newVal) {
45
+ if (newVal?.page && newVal.page !== this.currentPage)
46
+ this.currentPage = newVal.page;
47
+ }
48
+ componentWillLoad() {
49
+ this.innerRows = [...(this.rows || [])];
50
+ this.innerSelected = new Set(this.selected);
51
+ this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
52
+ if (this.pagination?.page) {
53
+ this.currentPage = this.pagination.page;
54
+ }
55
+ }
56
+ componentDidLoad() {
57
+ // SSR 환경 체크
58
+ if (typeof window === 'undefined')
59
+ return;
60
+ const middle = this.el.querySelector('.sd-table__middle');
61
+ if (!middle)
62
+ return;
63
+ const onScroll = () => {
64
+ const { scrollLeft, scrollWidth, clientWidth } = middle;
65
+ this.scrolledLeft = scrollLeft > 0;
66
+ this.scrolledRight = scrollLeft + clientWidth < scrollWidth;
67
+ };
68
+ middle.addEventListener('scroll', onScroll, { passive: true });
69
+ onScroll();
70
+ }
71
+ // ----- Derived getters -----
72
+ get visibleColumns() {
73
+ return this.columns.filter(col => col.visible !== false);
74
+ }
75
+ get paginatedRows() {
76
+ if (!this.pagination || !this.useInternalPagination)
77
+ return this.innerRows;
78
+ const { rowsPerPage = this.rows.length } = this.pagination || {};
79
+ const result = this.innerRows.slice((this.currentPage - 1) * rowsPerPage, this.currentPage * rowsPerPage);
80
+ return result;
81
+ }
82
+ get lastPageNumber() {
83
+ const { lastPage, rowsPerPage = this.rows.length } = this.pagination || {};
84
+ return lastPage ?? Math.max(1, Math.ceil(this.rows.length / rowsPerPage));
85
+ }
86
+ get sdTableClasses() {
87
+ return [
88
+ 'sd-table',
89
+ this.stickyHeader && 'sd-table--sticky-header',
90
+ this.selectable && 'sd-table--selectable',
91
+ this.resizable && 'sd-table--resizable',
92
+ !this.innerRows.length && 'sd-table--no-data',
93
+ ((this.stickyColumn?.left ?? 0) > 0 || (this.stickyColumn?.right ?? 0) > 0) &&
94
+ 'sd-table--sticky-column',
95
+ this.scrolledLeft && 'sd-table--scrolled-left',
96
+ this.scrolledRight && 'sd-table--scrolled-right',
97
+ ]
98
+ .filter(Boolean)
99
+ .join(' ');
100
+ }
101
+ // ----- Selection -----
102
+ isRowSelected(row) {
103
+ return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
104
+ }
105
+ updateRowSelect(row) {
106
+ const selectedArray = Array.from(this.innerSelected);
107
+ const exists = this.isRowSelected(row);
108
+ const newSelected = exists
109
+ ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
110
+ : [...selectedArray, row];
111
+ // 동일 상태면 set하지 않음 → 불필요 렌더 방지
112
+ if (newSelected.length === selectedArray.length)
113
+ return;
114
+ this.innerSelected = new Set(newSelected);
115
+ this.sdSelectChange.emit(Array.from(this.innerSelected));
116
+ }
117
+ toggleSelectAll(checked) {
118
+ if (checked) {
119
+ const pageRows = new Set([...this.paginatedRows]);
120
+ this.innerSelected = new Set([...this.innerSelected, ...pageRows]);
121
+ }
122
+ else {
123
+ const currentPageKeys = this.paginatedRows.map(r => r[this.rowKey]);
124
+ this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey])));
125
+ }
126
+ this.sdSelectChange.emit(Array.from(this.innerSelected));
127
+ }
128
+ get isAllChecked() {
129
+ const total = this.paginatedRows.length;
130
+ const selectedCount = this.paginatedRows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey] === row[this.rowKey])).length;
131
+ if (selectedCount === 0)
132
+ return false; // 아무것도 안 선택됨
133
+ if (selectedCount === total)
134
+ return true; // 전부 선택됨
135
+ return null; // 일부만 선택됨
136
+ }
137
+ // ----- Helpers -----
138
+ getStickyStyle(colIdx) {
139
+ const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) + (this.selectable ? 52 : 0);
140
+ const rightOffset = this.columnWidths
141
+ .filter((_, i) => i >= this.visibleColumns.length - (this.stickyColumn.right || 0) && i > colIdx)
142
+ .reduce((a, b) => a + b, 0);
143
+ return {
144
+ '--sticky-left-offset': `${leftOffset}px`,
145
+ '--sticky-right-offset': `${rightOffset}px`,
146
+ 'width': `${this.columnWidths[colIdx]}px`,
147
+ 'minWidth': `${this.columnWidths[colIdx]}px`,
148
+ 'maxWidth': `${this.columnWidths[colIdx]}px`,
149
+ };
150
+ }
151
+ handleResize(index, event) {
152
+ // SSR 환경 체크
153
+ if (typeof document === 'undefined')
154
+ return;
155
+ const startX = event.clientX;
156
+ const startWidth = this.columnWidths[index];
157
+ const handleMouseMove = (moveEvent) => {
158
+ const newWidth = Math.max(startWidth + moveEvent.clientX - startX, 50);
159
+ this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
160
+ };
161
+ const handleMouseUp = () => {
162
+ document.removeEventListener('mousemove', handleMouseMove);
163
+ document.removeEventListener('mouseup', handleMouseUp);
164
+ };
165
+ document.addEventListener('mousemove', handleMouseMove);
166
+ document.addEventListener('mouseup', handleMouseUp);
167
+ }
168
+ getCellValue(column, row) {
169
+ const { field, format, name } = column;
170
+ const value = typeof field === 'function' ? field(row) : field ? row[field] : row[name];
171
+ return format ? format(value, row) : value;
172
+ }
173
+ // ----- Render -----
174
+ renderHeader() {
175
+ return (h("thead", null, h("tr", null, this.selectable && (h("th", { class: {
176
+ 'sd-th': true,
177
+ 'sd-th--selected': true,
178
+ 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
179
+ }, style: {
180
+ '--sticky-left-offset': '0px',
181
+ } }, h("sd-checkbox", { checked: this.isAllChecked, disabled: !this.paginatedRows.length, onSdChange: (e) => this.toggleSelectAll(e.detail) }))), this.visibleColumns.map((col, colIdx) => (h("th", { key: col.name, class: {
182
+ 'sd-th': true,
183
+ [`${col.thClass}`]: Boolean(col.thClass),
184
+ 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
185
+ 'sticky-right': Boolean(this.stickyColumn.right && colIdx >= this.visibleColumns.length - this.stickyColumn.right),
186
+ 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
187
+ 'sticky-right-edge': Boolean(this.stickyColumn.right &&
188
+ colIdx === this.visibleColumns.length - this.stickyColumn.right),
189
+ }, style: this.getStickyStyle(colIdx) }, h("div", { class: `sd-th__content sd-th__content--${col.align || 'left'}` }, h("slot", { name: `header-cell-${col.name}` }, h("div", { class: "sd-th__content--label" }, col.label)), col.usePageMoveIcon && h("sd-icon", { name: "pageMove", size: "12", color: "#006AC1" }), col.tooltip && (h("sd-tooltip", { ...col.tooltipOptions }, h("div", { slot: "content" }, col.tooltip.map(text => (h("p", null, text))))))), this.resizable && typeof window !== 'undefined' && (h("div", { class: "sd-th__resizer", onMouseDown: (evt) => this.handleResize(colIdx, evt) }))))))));
190
+ }
191
+ renderBody() {
192
+ return (h("tbody", { ...(!this.paginatedRows.length && { part: 'tbody-empty' }) }, this.isLoading && (h("div", { class: "sd-table__loading" }, h("sd-loading-spinner", null))), !this.paginatedRows.length ? (h("tr", { class: "sd-table__no-data-row" }, h("td", { colSpan: this.visibleColumns.length + (this.selectable ? 1 : 0) }, h("slot", { name: "no-data" }, this.noDataLabel)))) : (this.paginatedRows.map((row, rowIdx) => (h("tr", { key: row[this.rowKey], class: "hover:bg-Grey_Lighten-6" }, this.selectable && (h("td", { class: {
193
+ 'sd-td': true,
194
+ 'sd-td--selected': true,
195
+ 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
196
+ }, style: {
197
+ '--sticky-left-offset': '0px',
198
+ } }, h("sd-checkbox", { checked: this.isRowSelected(row), disabled: !this.paginatedRows.length, onSdChange: () => this.updateRowSelect(row) }))), this.visibleColumns.map((column, colIdx) => {
199
+ const rendered = this.bodyCellRenderer?.(column, row);
200
+ return (h("td", { key: column.name, part: `td-${column.name}`, class: {
201
+ 'sd-td': true,
202
+ [`sd-td--${column.align || 'left'}`]: true,
203
+ 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
204
+ 'sticky-right': Boolean(this.stickyColumn.right &&
205
+ colIdx >= this.visibleColumns.length - this.stickyColumn.right),
206
+ 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
207
+ 'sticky-right-edge': Boolean(this.stickyColumn.right &&
208
+ colIdx === this.visibleColumns.length - this.stickyColumn.right),
209
+ [`${column.tdClass}`]: Boolean(column.tdClass),
210
+ }, style: this.getStickyStyle(colIdx) }, h("slot", { name: `body-cell-${column.name}-${rowIdx}` }, rendered ? (typeof rendered === 'string' ? (h("span", { innerHTML: rendered })) : (rendered)) : (this.getCellValue(column, row)))));
211
+ })))))));
212
+ }
213
+ render() {
214
+ return (h(Host, { key: '06f553b40a89351df1054a07191d3fe9d92dd1a4' }, h("div", { key: 'cfd19ef986b2a839791dfc6dbe0998fa4268bcc8', class: "sd-table__wrapper", style: {
215
+ '--table-width': this.width,
216
+ '--table-height': this.height,
217
+ } }, h("div", { key: 'ee2eb7c178fd4df207c096640f12061994340058', class: "sd-table__container" }, h("div", { key: 'fa2ca46bba403928152d9d087b3ec990615507d4', class: {
218
+ 'sd-table__middle': true,
219
+ 'sd-table__middle--loading': this.isLoading,
220
+ } }, h("table", { key: 'c5248468da6f986da45233ca86dcf68a53001cd6', part: "table", class: this.sdTableClasses }, this.renderHeader(), this.renderBody())), h("div", { key: 'd959e9785b3eab0a9e9864761c6377d561e6987c', class: "sd-table__bottom" })), this.pagination && this.innerRows.length > 0 && (h("div", { key: 'b592fee0e0747a34b3970e4ff7286afe37e79621', class: "sd-table__pagination" }, h("sd-pagination", { key: '05e7ed73d7beba2c14a4bcf07e8686a4d2cf664e', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onPageChange: (e) => {
221
+ if (!this.useInternalPagination) {
222
+ this.sdPageChange.emit(e.detail);
223
+ }
224
+ else {
225
+ this.currentPage = e.detail;
226
+ this.sdPageChange.emit(this.currentPage);
227
+ }
228
+ } }), this.useRowsPerPageSelect && (h("sd-select", { key: 'f0e4ad4e7ec0f857feac4fc669f5a523401120d6', value: this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", onSdChange: (e) => {
229
+ const changedRowsPerPage = e.detail.value ? Number(e.detail.value) : 0;
230
+ if (!this.useInternalPagination) {
231
+ this.sdRowsPerPageChange.emit(changedRowsPerPage);
232
+ }
233
+ else {
234
+ const newRowsPerPage = Number(e.detail.value || 0);
235
+ let newLastPage = Math.max(1, Math.ceil(this.innerRows.length / newRowsPerPage));
236
+ let newCurrentPage = this.currentPage;
237
+ if (newCurrentPage > newLastPage) {
238
+ newCurrentPage = newLastPage;
239
+ }
240
+ this.pagination = {
241
+ page: newCurrentPage,
242
+ rowsPerPage: newRowsPerPage,
243
+ lastPage: newLastPage,
244
+ };
245
+ this.currentPage = newCurrentPage;
246
+ this.sdRowsPerPageChange.emit(changedRowsPerPage);
247
+ }
248
+ } })))))));
249
+ }
250
+ static get is() { return "sd-table-backup"; }
251
+ static get originalStyleUrls() {
252
+ return {
253
+ "$": ["sd-table-backup.scss"]
254
+ };
255
+ }
256
+ static get styleUrls() {
257
+ return {
258
+ "$": ["sd-table-backup.css"]
259
+ };
260
+ }
261
+ static get properties() {
262
+ return {
263
+ "columns": {
264
+ "type": "unknown",
265
+ "mutable": false,
266
+ "complexType": {
267
+ "original": "SdTableColumn[]",
268
+ "resolved": "SdTableColumn[]",
269
+ "references": {
270
+ "SdTableColumn": {
271
+ "location": "local",
272
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
273
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::SdTableColumn"
274
+ }
275
+ }
276
+ },
277
+ "required": true,
278
+ "optional": false,
279
+ "docs": {
280
+ "tags": [],
281
+ "text": ""
282
+ },
283
+ "getter": false,
284
+ "setter": false
285
+ },
286
+ "rows": {
287
+ "type": "unknown",
288
+ "mutable": true,
289
+ "complexType": {
290
+ "original": "Row[]",
291
+ "resolved": "Row[]",
292
+ "references": {
293
+ "Row": {
294
+ "location": "local",
295
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
296
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::Row"
297
+ }
298
+ }
299
+ },
300
+ "required": true,
301
+ "optional": false,
302
+ "docs": {
303
+ "tags": [],
304
+ "text": ""
305
+ },
306
+ "getter": false,
307
+ "setter": false
308
+ },
309
+ "selected": {
310
+ "type": "unknown",
311
+ "mutable": true,
312
+ "complexType": {
313
+ "original": "Set<Row>",
314
+ "resolved": "Set<Row>",
315
+ "references": {
316
+ "Set": {
317
+ "location": "global",
318
+ "id": "global::Set"
319
+ },
320
+ "Row": {
321
+ "location": "local",
322
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
323
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::Row"
324
+ }
325
+ }
326
+ },
327
+ "required": false,
328
+ "optional": false,
329
+ "docs": {
330
+ "tags": [],
331
+ "text": ""
332
+ },
333
+ "getter": false,
334
+ "setter": false,
335
+ "defaultValue": "new Set()"
336
+ },
337
+ "rowKey": {
338
+ "type": "string",
339
+ "mutable": false,
340
+ "complexType": {
341
+ "original": "string",
342
+ "resolved": "string",
343
+ "references": {}
344
+ },
345
+ "required": false,
346
+ "optional": false,
347
+ "docs": {
348
+ "tags": [],
349
+ "text": ""
350
+ },
351
+ "getter": false,
352
+ "setter": false,
353
+ "reflect": false,
354
+ "attribute": "row-key",
355
+ "defaultValue": "'id'"
356
+ },
357
+ "selectable": {
358
+ "type": "boolean",
359
+ "mutable": false,
360
+ "complexType": {
361
+ "original": "boolean",
362
+ "resolved": "boolean",
363
+ "references": {}
364
+ },
365
+ "required": false,
366
+ "optional": false,
367
+ "docs": {
368
+ "tags": [],
369
+ "text": ""
370
+ },
371
+ "getter": false,
372
+ "setter": false,
373
+ "reflect": false,
374
+ "attribute": "selectable",
375
+ "defaultValue": "false"
376
+ },
377
+ "resizable": {
378
+ "type": "boolean",
379
+ "mutable": false,
380
+ "complexType": {
381
+ "original": "boolean",
382
+ "resolved": "boolean",
383
+ "references": {}
384
+ },
385
+ "required": false,
386
+ "optional": false,
387
+ "docs": {
388
+ "tags": [],
389
+ "text": ""
390
+ },
391
+ "getter": false,
392
+ "setter": false,
393
+ "reflect": false,
394
+ "attribute": "resizable",
395
+ "defaultValue": "false"
396
+ },
397
+ "width": {
398
+ "type": "string",
399
+ "mutable": false,
400
+ "complexType": {
401
+ "original": "string",
402
+ "resolved": "string | undefined",
403
+ "references": {}
404
+ },
405
+ "required": false,
406
+ "optional": true,
407
+ "docs": {
408
+ "tags": [],
409
+ "text": ""
410
+ },
411
+ "getter": false,
412
+ "setter": false,
413
+ "reflect": false,
414
+ "attribute": "width"
415
+ },
416
+ "height": {
417
+ "type": "string",
418
+ "mutable": false,
419
+ "complexType": {
420
+ "original": "string",
421
+ "resolved": "string | undefined",
422
+ "references": {}
423
+ },
424
+ "required": false,
425
+ "optional": true,
426
+ "docs": {
427
+ "tags": [],
428
+ "text": ""
429
+ },
430
+ "getter": false,
431
+ "setter": false,
432
+ "reflect": false,
433
+ "attribute": "height"
434
+ },
435
+ "stickyHeader": {
436
+ "type": "boolean",
437
+ "mutable": false,
438
+ "complexType": {
439
+ "original": "boolean",
440
+ "resolved": "boolean",
441
+ "references": {}
442
+ },
443
+ "required": false,
444
+ "optional": false,
445
+ "docs": {
446
+ "tags": [],
447
+ "text": ""
448
+ },
449
+ "getter": false,
450
+ "setter": false,
451
+ "reflect": false,
452
+ "attribute": "sticky-header",
453
+ "defaultValue": "false"
454
+ },
455
+ "stickyColumn": {
456
+ "type": "unknown",
457
+ "mutable": false,
458
+ "complexType": {
459
+ "original": "{ left?: number; right?: number }",
460
+ "resolved": "{ left?: number | undefined; right?: number | undefined; }",
461
+ "references": {}
462
+ },
463
+ "required": false,
464
+ "optional": false,
465
+ "docs": {
466
+ "tags": [],
467
+ "text": ""
468
+ },
469
+ "getter": false,
470
+ "setter": false,
471
+ "defaultValue": "{ left: 0, right: 0 }"
472
+ },
473
+ "noDataLabel": {
474
+ "type": "string",
475
+ "mutable": false,
476
+ "complexType": {
477
+ "original": "string",
478
+ "resolved": "string",
479
+ "references": {}
480
+ },
481
+ "required": false,
482
+ "optional": false,
483
+ "docs": {
484
+ "tags": [],
485
+ "text": ""
486
+ },
487
+ "getter": false,
488
+ "setter": false,
489
+ "reflect": false,
490
+ "attribute": "no-data-label",
491
+ "defaultValue": "'\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.'"
492
+ },
493
+ "isLoading": {
494
+ "type": "boolean",
495
+ "mutable": false,
496
+ "complexType": {
497
+ "original": "boolean",
498
+ "resolved": "boolean",
499
+ "references": {}
500
+ },
501
+ "required": false,
502
+ "optional": false,
503
+ "docs": {
504
+ "tags": [],
505
+ "text": ""
506
+ },
507
+ "getter": false,
508
+ "setter": false,
509
+ "reflect": false,
510
+ "attribute": "is-loading",
511
+ "defaultValue": "false"
512
+ },
513
+ "pagination": {
514
+ "type": "unknown",
515
+ "mutable": false,
516
+ "complexType": {
517
+ "original": "{\n page: number;\n rowsPerPage: number;\n lastPage?: number;\n }",
518
+ "resolved": "undefined | { page: number; rowsPerPage: number; lastPage?: number | undefined; }",
519
+ "references": {}
520
+ },
521
+ "required": false,
522
+ "optional": true,
523
+ "docs": {
524
+ "tags": [],
525
+ "text": ""
526
+ },
527
+ "getter": false,
528
+ "setter": false
529
+ },
530
+ "bodyCellRenderer": {
531
+ "type": "unknown",
532
+ "mutable": false,
533
+ "complexType": {
534
+ "original": "(\n column: SdTableColumn,\n row: Row,\n ) => HTMLElement | string | null | undefined",
535
+ "resolved": "((column: SdTableColumn, row: Row) => string | HTMLElement | null | undefined) | undefined",
536
+ "references": {
537
+ "SdTableColumn": {
538
+ "location": "local",
539
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
540
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::SdTableColumn"
541
+ },
542
+ "Row": {
543
+ "location": "local",
544
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
545
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::Row"
546
+ },
547
+ "HTMLElement": {
548
+ "location": "global",
549
+ "id": "global::HTMLElement"
550
+ }
551
+ }
552
+ },
553
+ "required": false,
554
+ "optional": true,
555
+ "docs": {
556
+ "tags": [],
557
+ "text": ""
558
+ },
559
+ "getter": false,
560
+ "setter": false
561
+ },
562
+ "useInternalPagination": {
563
+ "type": "boolean",
564
+ "mutable": false,
565
+ "complexType": {
566
+ "original": "boolean",
567
+ "resolved": "boolean",
568
+ "references": {}
569
+ },
570
+ "required": false,
571
+ "optional": false,
572
+ "docs": {
573
+ "tags": [],
574
+ "text": ""
575
+ },
576
+ "getter": false,
577
+ "setter": false,
578
+ "reflect": false,
579
+ "attribute": "use-internal-pagination",
580
+ "defaultValue": "false"
581
+ },
582
+ "useRowsPerPageSelect": {
583
+ "type": "boolean",
584
+ "mutable": false,
585
+ "complexType": {
586
+ "original": "boolean",
587
+ "resolved": "boolean",
588
+ "references": {}
589
+ },
590
+ "required": false,
591
+ "optional": false,
592
+ "docs": {
593
+ "tags": [],
594
+ "text": ""
595
+ },
596
+ "getter": false,
597
+ "setter": false,
598
+ "reflect": false,
599
+ "attribute": "use-rows-per-page-select",
600
+ "defaultValue": "false"
601
+ },
602
+ "rowsPerPageOption": {
603
+ "type": "unknown",
604
+ "mutable": false,
605
+ "complexType": {
606
+ "original": "SelectOption[]",
607
+ "resolved": "SelectOption[]",
608
+ "references": {
609
+ "SelectOption": {
610
+ "location": "import",
611
+ "path": "../sd-select/sd-select",
612
+ "id": "src/components/sd-select/sd-select.tsx::SelectOption"
613
+ }
614
+ }
615
+ },
616
+ "required": false,
617
+ "optional": false,
618
+ "docs": {
619
+ "tags": [],
620
+ "text": ""
621
+ },
622
+ "getter": false,
623
+ "setter": false,
624
+ "defaultValue": "[\n { label: '10\uAC1C\uC529 \uBCF4\uAE30', value: 10 },\n { label: '25\uAC1C\uC529 \uBCF4\uAE30', value: 25 },\n { label: '50\uAC1C\uC529 \uBCF4\uAE30', value: 50 },\n { label: '100\uAC1C\uC529 \uBCF4\uAE30', value: 100 },\n ]"
625
+ }
626
+ };
627
+ }
628
+ static get states() {
629
+ return {
630
+ "currentPage": {},
631
+ "innerRows": {},
632
+ "innerSelected": {},
633
+ "columnWidths": {},
634
+ "scrolledLeft": {},
635
+ "scrolledRight": {}
636
+ };
637
+ }
638
+ static get events() {
639
+ return [{
640
+ "method": "sdSelectChange",
641
+ "name": "sdSelectChange",
642
+ "bubbles": true,
643
+ "cancelable": true,
644
+ "composed": true,
645
+ "docs": {
646
+ "tags": [],
647
+ "text": ""
648
+ },
649
+ "complexType": {
650
+ "original": "Row[]",
651
+ "resolved": "Row[]",
652
+ "references": {
653
+ "Row": {
654
+ "location": "local",
655
+ "path": "/Users/meijing/Documents/sellmate/frontend/design-system/packages/stencil/src/components/sd-table-backup/sd-table-backup.tsx",
656
+ "id": "src/components/sd-table-backup/sd-table-backup.tsx::Row"
657
+ }
658
+ }
659
+ }
660
+ }, {
661
+ "method": "sdPageChange",
662
+ "name": "sdPageChange",
663
+ "bubbles": true,
664
+ "cancelable": true,
665
+ "composed": true,
666
+ "docs": {
667
+ "tags": [],
668
+ "text": ""
669
+ },
670
+ "complexType": {
671
+ "original": "number",
672
+ "resolved": "number",
673
+ "references": {}
674
+ }
675
+ }, {
676
+ "method": "sdRowsPerPageChange",
677
+ "name": "sdRowsPerPageChange",
678
+ "bubbles": true,
679
+ "cancelable": true,
680
+ "composed": true,
681
+ "docs": {
682
+ "tags": [],
683
+ "text": ""
684
+ },
685
+ "complexType": {
686
+ "original": "number",
687
+ "resolved": "number",
688
+ "references": {}
689
+ }
690
+ }];
691
+ }
692
+ static get elementRef() { return "el"; }
693
+ static get watchers() {
694
+ return [{
695
+ "propName": "columns",
696
+ "methodName": "handleColumnsChange"
697
+ }, {
698
+ "propName": "rows",
699
+ "methodName": "handleRowsChange"
700
+ }, {
701
+ "propName": "selected",
702
+ "methodName": "handleSelectedChange"
703
+ }, {
704
+ "propName": "pagination",
705
+ "methodName": "handlePaginationChange"
706
+ }];
707
+ }
708
+ }
709
+ //# sourceMappingURL=sd-table-backup.js.map