Compare commits
1 Commits
main
...
mhkim-node
| Author | SHA1 | Date |
|---|---|---|
|
|
5e8572954a |
|
|
@ -153,6 +153,7 @@ backend-node/uploads/
|
||||||
uploads/
|
uploads/
|
||||||
*.jpg
|
*.jpg
|
||||||
*.jpeg
|
*.jpeg
|
||||||
|
*.png
|
||||||
*.gif
|
*.gif
|
||||||
*.pdf
|
*.pdf
|
||||||
*.doc
|
*.doc
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 329 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 342 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
|
|
@ -583,7 +583,7 @@ const RealtimePreviewDynamicComponent: React.FC<RealtimePreviewProps> = ({
|
||||||
const needsStripBorder = isV2HorizLabel || isButtonComponent;
|
const needsStripBorder = isV2HorizLabel || isButtonComponent;
|
||||||
const safeComponentStyle = needsStripBorder
|
const safeComponentStyle = needsStripBorder
|
||||||
? (() => {
|
? (() => {
|
||||||
const { borderWidth, borderColor, borderStyle, border, borderRadius, ...rest } = componentStyle as any;
|
const { borderWidth, borderColor, borderStyle, border, ...rest } = componentStyle as any;
|
||||||
return rest;
|
return rest;
|
||||||
})()
|
})()
|
||||||
: componentStyle;
|
: componentStyle;
|
||||||
|
|
|
||||||
|
|
@ -379,12 +379,33 @@ export const TableListComponent: React.FC<TableListComponentProps> = ({
|
||||||
}
|
}
|
||||||
}, [tableConfig.selectedTable, currentUserId]);
|
}, [tableConfig.selectedTable, currentUserId]);
|
||||||
|
|
||||||
// columnVisibility 변경 시 컬럼 순서 및 가시성 적용
|
// columnVisibility 변경 시 컬럼 순서, 가시성, 너비 적용
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (columnVisibility.length > 0) {
|
if (columnVisibility.length > 0) {
|
||||||
const newOrder = columnVisibility.map((cv) => cv.columnName).filter((name) => name !== "__checkbox__"); // 체크박스 제외
|
const newOrder = columnVisibility.map((cv) => cv.columnName).filter((name) => name !== "__checkbox__"); // 체크박스 제외
|
||||||
setColumnOrder(newOrder);
|
setColumnOrder(newOrder);
|
||||||
|
|
||||||
|
// 너비 적용
|
||||||
|
const newWidths: Record<string, number> = {};
|
||||||
|
columnVisibility.forEach((cv) => {
|
||||||
|
if (cv.width) {
|
||||||
|
newWidths[cv.columnName] = cv.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (Object.keys(newWidths).length > 0) {
|
||||||
|
setColumnWidths((prev) => ({ ...prev, ...newWidths }));
|
||||||
|
|
||||||
|
// table_column_widths_* localStorage도 동기화 (초기 너비 로드 시 올바른 값 사용)
|
||||||
|
if (tableConfig.selectedTable && userId) {
|
||||||
|
const widthsKey = `table_column_widths_${tableConfig.selectedTable}_${userId}`;
|
||||||
|
try {
|
||||||
|
const existing = localStorage.getItem(widthsKey);
|
||||||
|
const merged = existing ? { ...JSON.parse(existing), ...newWidths } : newWidths;
|
||||||
|
localStorage.setItem(widthsKey, JSON.stringify(merged));
|
||||||
|
} catch { /* ignore */ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// localStorage에 저장 (사용자별)
|
// localStorage에 저장 (사용자별)
|
||||||
if (tableConfig.selectedTable && currentUserId) {
|
if (tableConfig.selectedTable && currentUserId) {
|
||||||
const storageKey = `table_column_visibility_${tableConfig.selectedTable}_${currentUserId}`;
|
const storageKey = `table_column_visibility_${tableConfig.selectedTable}_${currentUserId}`;
|
||||||
|
|
|
||||||
|
|
@ -570,6 +570,8 @@ export const ButtonPrimaryComponent: React.FC<ButtonPrimaryComponentProps> = ({
|
||||||
...restComponentStyle,
|
...restComponentStyle,
|
||||||
width: "100%",
|
width: "100%",
|
||||||
height: "100%",
|
height: "100%",
|
||||||
|
borderRadius: _br || "0.5rem",
|
||||||
|
overflow: "hidden",
|
||||||
};
|
};
|
||||||
|
|
||||||
// 디자인 모드 스타일
|
// 디자인 모드 스타일
|
||||||
|
|
|
||||||
|
|
@ -520,12 +520,33 @@ export const TableListComponent: React.FC<TableListComponentProps> = ({
|
||||||
}
|
}
|
||||||
}, [tableConfig.selectedTable, currentUserId]);
|
}, [tableConfig.selectedTable, currentUserId]);
|
||||||
|
|
||||||
// columnVisibility 변경 시 컬럼 순서 및 가시성 적용
|
// columnVisibility 변경 시 컬럼 순서, 가시성, 너비 적용
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (columnVisibility.length > 0) {
|
if (columnVisibility.length > 0) {
|
||||||
const newOrder = columnVisibility.map((cv) => cv.columnName).filter((name) => name !== "__checkbox__"); // 체크박스 제외
|
const newOrder = columnVisibility.map((cv) => cv.columnName).filter((name) => name !== "__checkbox__"); // 체크박스 제외
|
||||||
setColumnOrder(newOrder);
|
setColumnOrder(newOrder);
|
||||||
|
|
||||||
|
// 너비 적용
|
||||||
|
const newWidths: Record<string, number> = {};
|
||||||
|
columnVisibility.forEach((cv) => {
|
||||||
|
if (cv.width) {
|
||||||
|
newWidths[cv.columnName] = cv.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (Object.keys(newWidths).length > 0) {
|
||||||
|
setColumnWidths((prev) => ({ ...prev, ...newWidths }));
|
||||||
|
|
||||||
|
// table_column_widths_* localStorage도 동기화 (초기 너비 로드 시 올바른 값 사용)
|
||||||
|
if (tableConfig.selectedTable && userId) {
|
||||||
|
const widthsKey = `table_column_widths_${tableConfig.selectedTable}_${userId}`;
|
||||||
|
try {
|
||||||
|
const existing = localStorage.getItem(widthsKey);
|
||||||
|
const merged = existing ? { ...JSON.parse(existing), ...newWidths } : newWidths;
|
||||||
|
localStorage.setItem(widthsKey, JSON.stringify(merged));
|
||||||
|
} catch { /* ignore */ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// localStorage에 저장 (사용자별)
|
// localStorage에 저장 (사용자별)
|
||||||
if (tableConfig.selectedTable && currentUserId) {
|
if (tableConfig.selectedTable && currentUserId) {
|
||||||
const storageKey = `table_column_visibility_${tableConfig.selectedTable}_${currentUserId}`;
|
const storageKey = `table_column_visibility_${tableConfig.selectedTable}_${currentUserId}`;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue