lhj #137

Merged
hjlee merged 7 commits from lhj into main 2025-10-23 15:17:15 +09:00
3 changed files with 30 additions and 17 deletions
Showing only changes of commit ec1669d9ca - Show all commits

View File

@ -392,12 +392,21 @@ export default function DashboardDesigner({ dashboardId: initialDashboardId }: D
// 사이드바 적용
const handleApplySidebar = useCallback(
(updatedElement: DashboardElement) => {
updateElement(updatedElement.id, updatedElement);
// 사이드바는 열린 채로 유지하여 연속 수정 가능
// 단, sidebarElement도 업데이트해서 최신 상태 반영
setSidebarElement(updatedElement);
// 현재 요소의 최신 상태를 가져와서 position과 size는 유지
const currentElement = elements.find((el) => el.id === updatedElement.id);
if (currentElement) {
// position과 size는 현재 상태 유지, 나머지만 업데이트
const finalElement = {
...updatedElement,
position: currentElement.position,
size: currentElement.size,
};
updateElement(finalElement.id, finalElement);
// 사이드바도 최신 상태로 업데이트
setSidebarElement(finalElement);
}
},
[updateElement],
[elements, updateElement],
);
// 레이아웃 저장

View File

@ -255,7 +255,7 @@ export function ListWidget({ element }: ListWidgetProps) {
</TableRow>
) : (
paginatedRows.map((row, idx) => (
<TableRow key={idx} className={config.stripedRows ? undefined : ""}>
<TableRow key={idx} className={config.stripedRows && idx % 2 === 1 ? "bg-muted/50" : ""}>
{displayColumns
.filter((col) => col.visible)
.map((col) => (

View File

@ -119,22 +119,13 @@ export function UnifiedColumnEditor({ queryResult, config, onConfigChange }: Uni
return (
<div
key={col.id}
draggable
onDragStart={(e) => {
handleDragStart(index);
e.currentTarget.style.cursor = "grabbing";
}}
onDragOver={(e) => handleDragOver(e, index)}
onDrop={handleDrop}
onDragEnd={(e) => {
handleDragEnd();
e.currentTarget.style.cursor = "grab";
}}
className={`group relative rounded-md border transition-all ${
col.visible
? "border-primary/40 bg-primary/5 shadow-sm"
: "border-gray-200 bg-white hover:border-gray-300 hover:shadow-sm"
} cursor-grab active:cursor-grabbing ${draggedIndex === index ? "scale-95 opacity-50" : ""}`}
} ${draggedIndex === index ? "scale-95 opacity-50" : ""}`}
>
{/* 헤더 */}
<div className="flex items-center gap-2 px-2.5 py-2">
@ -143,7 +134,20 @@ export function UnifiedColumnEditor({ queryResult, config, onConfigChange }: Uni
onCheckedChange={() => handleToggle(col.id)}
className="data-[state=checked]:bg-primary data-[state=checked]:border-primary h-4 w-4 shrink-0 rounded-full"
/>
<GripVertical className="group-hover:text-primary h-3.5 w-3.5 shrink-0 text-gray-400 transition-colors" />
<div
draggable
onDragStart={(e) => {
handleDragStart(index);
e.currentTarget.style.cursor = "grabbing";
}}
onDragEnd={(e) => {
handleDragEnd();
e.currentTarget.style.cursor = "grab";
}}
className="cursor-grab active:cursor-grabbing"
>
<GripVertical className="group-hover:text-primary h-3.5 w-3.5 shrink-0 text-gray-400 transition-colors" />
</div>
<div className="min-w-0 flex-1">
<div className="flex items-center gap-1.5">
<span className="truncate text-[11px] font-medium text-gray-900">