Files
vexplor/frontend/lib/registry/pop-components/pop-string-list/index.tsx
SeongHyun Kim e3ae8d273c feat(pop): 컴포넌트 연결 단순화 + 상태 변경 규칙 UI 개선 + 조회 키 설정
컴포넌트 연결 단순화
- ConnectionEditor: 이벤트 연결 시 "어디로" Select 1개로 단순화
- useConnectionResolver: 호환 이벤트 자동 라우팅 (_auto 모드)
- connectionMeta에 category(event/filter/data) 필드 추가

상태 변경 규칙 UI 개선
- StatusChangeRule 타입 통합, 모든 버튼 프리셋에서 사용 가능
- TableCombobox/ColumnCombobox 공용 컴포넌트 추출 (pop-shared/)
- 테이블/컬럼 드롭다운, 고정값/조건부 값 설정 UI
- 입고확정 API 신규 (popActionRoutes.ts, 동적 상태 변경 처리)

조회 키 자동/수동 설정
- 대상 테이블 기반 자동 판단 (cart_items -> id, 그 외 -> row_key -> PK)
- 수동 모드: 카드 항목 필드와 대상 PK 컬럼을 직접 지정 가능
- PK 컬럼명 동적 표시 (isPrimaryKey 정보 활용)
2026-03-03 15:31:13 +09:00

47 lines
1.7 KiB
TypeScript

"use client";
/**
* pop-string-list 컴포넌트 레지스트리 등록 진입점
*
* 이 파일을 import하면 side-effect로 PopComponentRegistry에 자동 등록됨
*/
import { PopComponentRegistry } from "../../PopComponentRegistry";
import { PopStringListComponent } from "./PopStringListComponent";
import { PopStringListConfigPanel } from "./PopStringListConfig";
import { PopStringListPreviewComponent } from "./PopStringListPreview";
import type { PopStringListConfig } from "./types";
// 기본 설정값
const defaultConfig: PopStringListConfig = {
displayMode: "list",
header: { enabled: true, label: "" },
overflow: { visibleRows: 5, mode: "loadMore", showExpandButton: true, loadMoreCount: 5, maxExpandRows: 50, pageSize: 5, paginationStyle: "bottom" },
dataSource: { tableName: "" },
listColumns: [],
cardGrid: undefined,
};
// 레지스트리 등록
PopComponentRegistry.registerComponent({
id: "pop-string-list",
name: "리스트 목록",
description: "테이블 데이터를 리스트 또는 카드 형태로 표시",
category: "display",
icon: "List",
component: PopStringListComponent,
configPanel: PopStringListConfigPanel,
preview: PopStringListPreviewComponent,
defaultProps: defaultConfig,
connectionMeta: {
sendable: [
{ key: "selected_row", label: "선택된 행", type: "selected_row", category: "data", description: "사용자가 선택한 행 데이터를 전달" },
],
receivable: [
{ key: "filter_condition", label: "필터 조건", type: "filter_value", category: "filter", description: "외부 컴포넌트에서 받은 필터 조건으로 목록 필터링" },
],
},
touchOptimized: true,
supportedDevices: ["mobile", "tablet"],
});