feat(pop-button): pop-button 컴포넌트 MVP 구현
- PopButtonComponent: 5가지 액션 타입(save/delete/api/modal/event) + 후속 액션 체이닝 - PopButtonConfigPanel: 프리셋 기반 설정(save/delete/logout/menu/modal-open/custom) - 확인 다이얼로그(ConfirmConfig) 선택 기능 - usePopEvent/useDataSource 훅 연동 - PopComponentType에 pop-button 추가, 팔레트 등록 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
ae3261d9bc
commit
84426b82cf
|
|
@ -3,7 +3,7 @@
|
||||||
import { useDrag } from "react-dnd";
|
import { useDrag } from "react-dnd";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { PopComponentType } from "../types/pop-layout";
|
import { PopComponentType } from "../types/pop-layout";
|
||||||
import { Square, FileText, MousePointer, BarChart3, LayoutGrid } from "lucide-react";
|
import { Square, FileText, MousePointer, BarChart3, LayoutGrid, MousePointerClick } from "lucide-react";
|
||||||
import { DND_ITEM_TYPES } from "../constants";
|
import { DND_ITEM_TYPES } from "../constants";
|
||||||
|
|
||||||
// 컴포넌트 정의
|
// 컴포넌트 정의
|
||||||
|
|
@ -45,6 +45,12 @@ const PALETTE_ITEMS: PaletteItem[] = [
|
||||||
icon: LayoutGrid,
|
icon: LayoutGrid,
|
||||||
description: "테이블 데이터를 카드 형태로 표시",
|
description: "테이블 데이터를 카드 형태로 표시",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: "pop-button",
|
||||||
|
label: "버튼",
|
||||||
|
icon: MousePointerClick,
|
||||||
|
description: "액션 버튼 (저장/삭제/API/모달)",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 드래그 가능한 컴포넌트 아이템
|
// 드래그 가능한 컴포넌트 아이템
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
/**
|
/**
|
||||||
* POP 컴포넌트 타입
|
* POP 컴포넌트 타입
|
||||||
*/
|
*/
|
||||||
export type PopComponentType = "pop-sample" | "pop-text" | "pop-icon" | "pop-dashboard" | "pop-card-list";
|
export type PopComponentType = "pop-sample" | "pop-text" | "pop-icon" | "pop-dashboard" | "pop-card-list" | "pop-button";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 데이터 흐름 정의
|
* 데이터 흐름 정의
|
||||||
|
|
@ -345,6 +345,7 @@ export const DEFAULT_COMPONENT_GRID_SIZE: Record<PopComponentType, { colSpan: nu
|
||||||
"pop-icon": { colSpan: 1, rowSpan: 2 },
|
"pop-icon": { colSpan: 1, rowSpan: 2 },
|
||||||
"pop-dashboard": { colSpan: 6, rowSpan: 3 },
|
"pop-dashboard": { colSpan: 6, rowSpan: 3 },
|
||||||
"pop-card-list": { colSpan: 4, rowSpan: 3 },
|
"pop-card-list": { colSpan: 4, rowSpan: 3 },
|
||||||
|
"pop-button": { colSpan: 2, rowSpan: 1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,8 @@ import "./pop-icon";
|
||||||
import "./pop-dashboard";
|
import "./pop-dashboard";
|
||||||
import "./pop-card-list";
|
import "./pop-card-list";
|
||||||
|
|
||||||
|
import "./pop-button";
|
||||||
|
|
||||||
// 향후 추가될 컴포넌트들:
|
// 향후 추가될 컴포넌트들:
|
||||||
// import "./pop-field";
|
// import "./pop-field";
|
||||||
// import "./pop-button";
|
|
||||||
// import "./pop-list";
|
// import "./pop-list";
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue