sellmate-design-system-react 1.1.1 → 1.1.3
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.
- package/dist/components/SGnb/SGnb.cjs.map +1 -1
- package/dist/components/SGnb/SGnb.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +2 -2
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +2 -2
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SPage/SPage.cjs +3 -3
- package/dist/components/SPage/SPage.cjs.map +1 -1
- package/dist/components/SPage/SPage.js +3 -3
- package/dist/components/SPage/SPage.js.map +1 -1
- package/dist/components/SPopup/SPopup.cjs +2 -2
- package/dist/components/SPopup/SPopup.cjs.map +1 -1
- package/dist/components/SPopup/SPopup.js +2 -2
- package/dist/components/SPopup/SPopup.js.map +1 -1
- package/dist/components/SScrollArea/SScrollArea.cjs +2 -2
- package/dist/components/SScrollArea/SScrollArea.cjs.map +1 -1
- package/dist/components/SScrollArea/SScrollArea.js +2 -2
- package/dist/components/SScrollArea/SScrollArea.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +2 -2
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +2 -2
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +137 -95
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.d.ts +1 -1
- package/dist/components/STable/STable.js +137 -95
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/index.cjs +138 -96
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +138 -96
- package/dist/index.js.map +1 -1
- package/dist/lib/scrollbar.cjs +3 -3
- package/dist/lib/scrollbar.cjs.map +1 -1
- package/dist/lib/scrollbar.js +3 -3
- package/dist/lib/scrollbar.js.map +1 -1
- package/dist/styles.css +33 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3040,9 +3040,9 @@ var SDivider = react.forwardRef(function SDivider2({ vertical = false, className
|
|
|
3040
3040
|
// src/lib/scrollbar.ts
|
|
3041
3041
|
var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
|
|
3042
3042
|
var SCROLLBAR_CLASS = `${FIREFOX_SCROLLBAR_CLASS} [&::-webkit-scrollbar]:h-[12px] [&::-webkit-scrollbar]:w-[12px] [&::-webkit-scrollbar]:bg-transparent [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-[var(--color-grey-45)] [&::-webkit-scrollbar-thumb]:bg-clip-padding`;
|
|
3043
|
-
var SCROLLBAR_TRACK_BG_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-grey-10)] [&::-webkit-scrollbar]:bg-[var(--color-grey-10)] [&::-webkit-scrollbar-track]:bg-[var(--color-grey-10)]";
|
|
3044
|
-
var SCROLLBAR_TRACK_BG_WHITE_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-white)] [&::-webkit-scrollbar]:bg-[var(--color-white)] [&::-webkit-scrollbar-track]:bg-[var(--color-white)]";
|
|
3045
|
-
var SCROLLBAR_TRACK_BORDER_CLASS = "[&::-webkit-scrollbar-track:vertical]:[border-left:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-track:horizontal]:[border-top:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-thumb:vertical]:[border-left-width:3px] [&::-webkit-scrollbar-thumb:horizontal]:[border-top-width:3px]";
|
|
3043
|
+
var SCROLLBAR_TRACK_BG_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-grey-10)] [&::-webkit-scrollbar]:bg-[var(--color-grey-10)] [&::-webkit-scrollbar-track]:bg-[var(--color-grey-10)] [&::-webkit-scrollbar-corner]:bg-[var(--color-grey-10)]";
|
|
3044
|
+
var SCROLLBAR_TRACK_BG_WHITE_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-white)] [&::-webkit-scrollbar]:bg-[var(--color-white)] [&::-webkit-scrollbar-track]:bg-[var(--color-white)] [&::-webkit-scrollbar-corner]:bg-[var(--color-white)]";
|
|
3045
|
+
var SCROLLBAR_TRACK_BORDER_CLASS = "[&::-webkit-scrollbar-track:vertical]:[border-left:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-track:horizontal]:[border-top:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-corner]:[border-top:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-corner]:[border-left:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-thumb:vertical]:[border-left-width:3px] [&::-webkit-scrollbar-thumb:horizontal]:[border-top-width:3px]";
|
|
3046
3046
|
var AXIS_CLASS = {
|
|
3047
3047
|
vertical: "overflow-x-hidden overflow-y-auto",
|
|
3048
3048
|
horizontal: "overflow-x-auto overflow-y-hidden",
|
|
@@ -7345,7 +7345,6 @@ var STable = react.forwardRef(function STable2({
|
|
|
7345
7345
|
resizable = false,
|
|
7346
7346
|
width,
|
|
7347
7347
|
height,
|
|
7348
|
-
stickyHeader = false,
|
|
7349
7348
|
stickyColumn,
|
|
7350
7349
|
radius = "default",
|
|
7351
7350
|
noDataLabel = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
@@ -7411,6 +7410,8 @@ var STable = react.forwardRef(function STable2({
|
|
|
7411
7410
|
const [rowCountOverride, setRowCountOverride] = react.useState(null);
|
|
7412
7411
|
const rowCount = rowCountOverride ?? rows.length;
|
|
7413
7412
|
const scrollRef = react.useRef(null);
|
|
7413
|
+
const headerScrollRef = react.useRef(null);
|
|
7414
|
+
const [headerGutter, setHeaderGutter] = react.useState(0);
|
|
7414
7415
|
const [vsRange, setVsRange] = react.useState({ start: 0, end: 0 });
|
|
7415
7416
|
const lastReachEndRef = react.useRef(-1);
|
|
7416
7417
|
const cbRef = react.useRef({ onVirtualUpdate, onVirtualReachEnd });
|
|
@@ -7435,6 +7436,9 @@ var STable = react.forwardRef(function STable2({
|
|
|
7435
7436
|
const handleScroll = react.useCallback(() => {
|
|
7436
7437
|
const el = scrollRef.current;
|
|
7437
7438
|
if (!el) return;
|
|
7439
|
+
const header = headerScrollRef.current;
|
|
7440
|
+
if (header) header.scrollLeft = el.scrollLeft;
|
|
7441
|
+
setHeaderGutter(el.offsetWidth - el.clientWidth);
|
|
7438
7442
|
setScrolledLeft(el.scrollLeft > 0);
|
|
7439
7443
|
setScrolledRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
|
|
7440
7444
|
if (useVirtualScroll) {
|
|
@@ -7444,7 +7448,7 @@ var STable = react.forwardRef(function STable2({
|
|
|
7444
7448
|
}, [useVirtualScroll, calcRange]);
|
|
7445
7449
|
react.useEffect(() => {
|
|
7446
7450
|
handleScroll();
|
|
7447
|
-
}, [handleScroll, rowCount, columnWidths]);
|
|
7451
|
+
}, [handleScroll, rowCount, columnWidths, isLoading, height]);
|
|
7448
7452
|
react.useEffect(() => {
|
|
7449
7453
|
if (!useVirtualScroll) return;
|
|
7450
7454
|
cbRef.current.onVirtualUpdate?.({ from: vsRange.start, to: vsRange.end });
|
|
@@ -7624,6 +7628,10 @@ var STable = react.forwardRef(function STable2({
|
|
|
7624
7628
|
isRightEdge && scrolledRight && "shadow-[-5px_0_8px_0_rgba(34,34,34,0.1)]"
|
|
7625
7629
|
);
|
|
7626
7630
|
};
|
|
7631
|
+
const colgroup = /* @__PURE__ */ jsxRuntime.jsxs("colgroup", { children: [
|
|
7632
|
+
selectable && /* @__PURE__ */ jsxRuntime.jsx("col", { style: { width: SELECTABLE_COLUMN_WIDTH } }),
|
|
7633
|
+
visibleCols.map((col, i) => /* @__PURE__ */ jsxRuntime.jsx("col", { style: col.autoWidth ? void 0 : { width: columnWidths[i] } }, col.name))
|
|
7634
|
+
] });
|
|
7627
7635
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7628
7636
|
"div",
|
|
7629
7637
|
{
|
|
@@ -7634,42 +7642,45 @@ var STable = react.forwardRef(function STable2({
|
|
|
7634
7642
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7635
7643
|
"div",
|
|
7636
7644
|
{
|
|
7637
|
-
ref: scrollRef,
|
|
7638
|
-
onScroll: handleScroll,
|
|
7639
7645
|
className: cn(
|
|
7640
|
-
"bg-white relative overflow-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7646
|
+
"bg-white relative flex flex-col overflow-hidden border border-solid border-[color:var(--cmp-table-border-color)]",
|
|
7647
|
+
// height가 없으면 루트가 받은 높이를 끝까지 채운다. 호스트가 className으로
|
|
7648
|
+
// `flex-1 min-h-0` 등을 줘 루트 높이가 확정된 경우, 행이 적어도 테두리 박스가
|
|
7649
|
+
// 남은 영역을 그대로 차지한다. basis는 auto로 둬 높이가 확정되지 않은
|
|
7650
|
+
// 기본 사용(내용만큼 커지는 케이스)에서는 동작이 바뀌지 않는다.
|
|
7651
|
+
!height && "min-h-0 grow",
|
|
7644
7652
|
radiusClass,
|
|
7645
|
-
// 원본 sd-table__scroll-container--loading/--no-data: 로딩·데이터 없음 시
|
|
7646
|
-
(isLoading || rowCount === 0) && "
|
|
7653
|
+
// 원본 sd-table__scroll-container--loading/--no-data: 로딩·데이터 없음 시 인터랙션 차단
|
|
7654
|
+
(isLoading || rowCount === 0) && "pointer-events-none"
|
|
7647
7655
|
),
|
|
7648
7656
|
style: {
|
|
7649
7657
|
height,
|
|
7650
7658
|
minHeight: isNoData ? "calc(var(--cmp-table-header-height) + 60px)" : void 0
|
|
7651
7659
|
},
|
|
7652
7660
|
children: [
|
|
7653
|
-
/* @__PURE__ */ jsxRuntime.
|
|
7654
|
-
"
|
|
7661
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7662
|
+
"div",
|
|
7655
7663
|
{
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
|
|
7665
|
-
|
|
7666
|
-
|
|
7664
|
+
ref: headerScrollRef,
|
|
7665
|
+
className: "flex-none overflow-hidden",
|
|
7666
|
+
style: {
|
|
7667
|
+
borderRight: headerGutter ? `${headerGutter}px solid var(--cmp-table-header-bg)` : void 0
|
|
7668
|
+
},
|
|
7669
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7670
|
+
"table",
|
|
7671
|
+
{
|
|
7672
|
+
className: "w-full table-fixed border-separate border-spacing-0 text-left",
|
|
7673
|
+
style: { fontSize: 12 },
|
|
7674
|
+
children: [
|
|
7675
|
+
colgroup,
|
|
7676
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: cn(isNoData && "opacity-40"), children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "h-[var(--cmp-table-header-height)] bg-[var(--cmp-table-header-bg)]", children: [
|
|
7667
7677
|
selectable && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7668
7678
|
"th",
|
|
7669
7679
|
{
|
|
7670
7680
|
className: cn(
|
|
7671
7681
|
// 원본 .th--selected: 48px 고정폭, 항상 left sticky, 체크박스 중앙정렬
|
|
7672
|
-
|
|
7682
|
+
// 하단 border는 헤더 래퍼가 연속으로 그리므로 셀에는 두지 않는다.
|
|
7683
|
+
"sticky left-0 z-[7] bg-[var(--cmp-table-header-bg)] text-center align-middle",
|
|
7673
7684
|
stickyLeft === 0 && scrolledLeft && "shadow-[5px_0_8px_0_rgba(34,34,34,0.1)]"
|
|
7674
7685
|
),
|
|
7675
7686
|
style: {
|
|
@@ -7693,7 +7704,8 @@ var STable = react.forwardRef(function STable2({
|
|
|
7693
7704
|
"th",
|
|
7694
7705
|
{
|
|
7695
7706
|
className: cn(
|
|
7696
|
-
|
|
7707
|
+
// 하단 border는 헤더 래퍼가 연속으로 그린다 (거터 영역까지 이어짐).
|
|
7708
|
+
"relative bg-[var(--cmp-table-header-bg)] px-[16px] text-[12px] font-medium leading-[20px] text-[color:var(--sys-color-fg-primary)]",
|
|
7697
7709
|
stickyInfo(i).isSticky && "z-[6]",
|
|
7698
7710
|
stickyShadowClass(i),
|
|
7699
7711
|
col.thClass
|
|
@@ -7731,74 +7743,102 @@ var STable = react.forwardRef(function STable2({
|
|
|
7731
7743
|
},
|
|
7732
7744
|
col.name
|
|
7733
7745
|
))
|
|
7734
|
-
]
|
|
7735
|
-
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7746
|
-
|
|
7747
|
-
|
|
7748
|
-
|
|
7749
|
-
|
|
7750
|
-
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
|
|
7757
|
-
|
|
7758
|
-
|
|
7759
|
-
|
|
7760
|
-
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
7779
|
-
|
|
7780
|
-
|
|
7746
|
+
] }) })
|
|
7747
|
+
]
|
|
7748
|
+
}
|
|
7749
|
+
)
|
|
7750
|
+
}
|
|
7751
|
+
),
|
|
7752
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7753
|
+
"div",
|
|
7754
|
+
{
|
|
7755
|
+
ref: scrollRef,
|
|
7756
|
+
onScroll: handleScroll,
|
|
7757
|
+
className: cn(
|
|
7758
|
+
// 헤더 하단 구분선은 body 상단 border로 그린다. body 래퍼는 스크롤바를 포함한
|
|
7759
|
+
// 전체 폭을 차지하므로(스크롤바는 border 안쪽) 헤더 거터의 border-right와 미터가
|
|
7760
|
+
// 생기지 않아 색·길이가 균일한 한 줄이 된다.
|
|
7761
|
+
"min-h-0 flex-1 overflow-auto border-t border-solid border-[color:var(--cmp-table-border-color)]",
|
|
7762
|
+
SCROLLBAR_CLASS,
|
|
7763
|
+
SCROLLBAR_TRACK_BG_CLASS,
|
|
7764
|
+
SCROLLBAR_TRACK_BORDER_CLASS,
|
|
7765
|
+
// 원본 sd-table__scroll-container--loading/--no-data: 로딩·데이터 없음 시 스크롤 차단
|
|
7766
|
+
(isLoading || rowCount === 0) && "overflow-hidden"
|
|
7767
|
+
),
|
|
7768
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7769
|
+
"table",
|
|
7770
|
+
{
|
|
7771
|
+
className: "w-full table-fixed border-separate border-spacing-0 text-left",
|
|
7772
|
+
style: { fontSize: 12 },
|
|
7773
|
+
children: [
|
|
7774
|
+
colgroup,
|
|
7775
|
+
/* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
7776
|
+
useVirtualScroll && topSpacer > 0 && /* @__PURE__ */ jsxRuntime.jsx("tr", { "aria-hidden": true, style: { height: topSpacer }, children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColSpan, className: "p-0" }) }),
|
|
7777
|
+
rowCount === 0 ? null : bodyRows.map((row, ri) => {
|
|
7778
|
+
const isSel = selectedKeys.has(row[rowKey]);
|
|
7779
|
+
const rowBg = "bg-white";
|
|
7780
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7781
|
+
"tr",
|
|
7782
|
+
{
|
|
7783
|
+
onClick: () => onRowClick?.(row),
|
|
7784
|
+
className: cn(
|
|
7785
|
+
"group/table-row hover:bg-[var(--color-grey-05)]",
|
|
7786
|
+
onRowClick && "cursor-pointer"
|
|
7787
|
+
),
|
|
7788
|
+
style: { height: useVirtualScroll ? effectiveRowHeight : rowH },
|
|
7789
|
+
children: [
|
|
7790
|
+
selectable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7791
|
+
"td",
|
|
7792
|
+
{
|
|
7793
|
+
className: cn(
|
|
7794
|
+
// 원본 .td--selected: 48px 고정폭, 항상 left sticky, 체크박스 중앙정렬
|
|
7795
|
+
"sticky left-0 z-[2] border-b border-solid border-[color:var(--cmp-table-border-color)] align-middle group-hover/table-row:bg-[var(--color-grey-05)]",
|
|
7796
|
+
rowBg,
|
|
7797
|
+
stickyLeft === 0 && scrolledLeft && "shadow-[5px_0_8px_0_rgba(34,34,34,0.1)]"
|
|
7798
|
+
),
|
|
7799
|
+
style: {
|
|
7800
|
+
width: SELECTABLE_COLUMN_WIDTH,
|
|
7801
|
+
minWidth: SELECTABLE_COLUMN_WIDTH,
|
|
7802
|
+
maxWidth: SELECTABLE_COLUMN_WIDTH
|
|
7803
|
+
},
|
|
7804
|
+
onClick: (e) => e.stopPropagation(),
|
|
7805
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SCheckbox, { value: isSel, onValueChange: () => toggleRow(row) }) })
|
|
7806
|
+
}
|
|
7781
7807
|
),
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7808
|
+
visibleCols.map((col, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7809
|
+
"td",
|
|
7810
|
+
{
|
|
7811
|
+
className: cn(
|
|
7812
|
+
// 원본 .td: 컬럼 폭에 맞춰 내용 말줄임(overflow hidden + ellipsis) + 행 구분선(border-b)
|
|
7813
|
+
// 셀 배경은 흰색으로 채워 뒤 배경이 비치지 않게 하고, hover 시 행 배경(grey_05)을 따른다.
|
|
7814
|
+
"overflow-hidden text-ellipsis whitespace-nowrap border-b border-solid border-[color:var(--cmp-table-border-color)] text-[12px] leading-[20px] text-[color:var(--sys-color-fg-primary)]",
|
|
7815
|
+
rowBg,
|
|
7816
|
+
"group-hover/table-row:bg-[var(--color-grey-05)]",
|
|
7817
|
+
stickyShadowClass(i),
|
|
7818
|
+
typeof col.tdClass === "function" ? col.tdClass(row) : col.tdClass
|
|
7819
|
+
),
|
|
7820
|
+
style: {
|
|
7821
|
+
paddingLeft: cellPadX,
|
|
7822
|
+
paddingRight: cellPadX,
|
|
7823
|
+
paddingTop: cellPadY,
|
|
7824
|
+
paddingBottom: cellPadY,
|
|
7825
|
+
textAlign: col.align ?? "left",
|
|
7826
|
+
...cellStyle(i)
|
|
7827
|
+
},
|
|
7828
|
+
children: col.render ? col.render(row, cellValue(col, row)) : cellValue(col, row)
|
|
7829
|
+
},
|
|
7830
|
+
col.name
|
|
7831
|
+
))
|
|
7832
|
+
]
|
|
7833
|
+
},
|
|
7834
|
+
row[rowKey] ?? ri
|
|
7835
|
+
);
|
|
7836
|
+
}),
|
|
7837
|
+
useVirtualScroll && bottomSpacer > 0 && /* @__PURE__ */ jsxRuntime.jsx("tr", { "aria-hidden": true, style: { height: bottomSpacer }, children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColSpan, className: "p-0" }) })
|
|
7838
|
+
] })
|
|
7839
|
+
]
|
|
7840
|
+
}
|
|
7841
|
+
)
|
|
7802
7842
|
}
|
|
7803
7843
|
),
|
|
7804
7844
|
isNoData && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -7817,7 +7857,9 @@ var STable = react.forwardRef(function STable2({
|
|
|
7817
7857
|
),
|
|
7818
7858
|
showPagination && // 원본 sd-table__pagination: 테이블 하단에 이어붙는 회색 바(높이 48px, margin-top:-1px로 테두리 겹침).
|
|
7819
7859
|
// SPagination은 전체 폭 기준 중앙, rows-per-page SSelect는 우측에 absolute 배치해 중앙 정렬을 유지한다.
|
|
7820
|
-
|
|
7860
|
+
// 루트 높이가 확정된 경우(테이블이 남은 영역을 채우는 배치) 페이지네이션 바가
|
|
7861
|
+
// 눌리지 않도록 shrink-0으로 48px를 보장한다.
|
|
7862
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative -mt-px flex h-[48px] shrink-0 items-center justify-center rounded-[var(--cmp-table-radius)] border border-solid border-[color:var(--cmp-table-border-color)] bg-[var(--color-grey-05)]", children: [
|
|
7821
7863
|
/* @__PURE__ */ jsxRuntime.jsx(SPagination, { currentPage: displayPage, lastPage, onPageChange: changePage }),
|
|
7822
7864
|
useRowsPerPageSelect && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-[10px] top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7823
7865
|
SSelect,
|