Files
invyone/frontend/components/numbering-rule/NumberingRuleCreateDialog.tsx
T
gbpark a5bbd1eb7c refactor(numbering-rule): NumberingRule → Input canonical 흡수 + 채번 관리 페이지 분리
- 옛 registry/numbering-rule, registry/v2-numbering-rule, V2NumberingRuleConfigPanel,
  NumberingRuleTemplate 폐기 — InvFieldConfigPanel + InputComponent 로 통합
- input 에 numbering-picker / select-pickers 추가, autonum 타입 흡수
- 채번 관리 전용 admin 페이지(systemMng/numberingRuleList) + CreateDialog +
  SequenceManagementPanel 신설
- backend NumberingRule controller/service/mapper 갱신 (시퀀스 관리 엔드포인트)
- input canonical 진행 노트 + 채번 관리 mockup 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 21:42:13 +09:00

57 lines
1.9 KiB
TypeScript

"use client";
import React from "react";
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { NumberingRuleDesigner } from "./NumberingRuleDesigner";
import { NumberingRuleConfig } from "@/types/numbering-rule";
/**
* NumberingRuleCreateDialog — 스튜디오 InvFieldConfigPanel 에서
* "새 규칙 만들기" CTA 로 호출되는 모달.
*
* NumberingRuleDesigner 의 좌측 컬럼 목록을 hide (`lockedColumn`) 하고
* 우측 디자인/저장 영역만 노출. 저장 완료 시 부모 (InvFieldConfigPanel) 가
* 새 ruleId 를 받아 rules 목록 refresh + 자동 선택.
*/
export interface NumberingRuleCreateDialogProps {
open: boolean;
onOpenChange: (open: boolean) => void;
tableName: string;
columnName?: string;
/**
* 저장 완료 시 호출. 부모 측에서 rules refresh + numberingRuleId 자동 선택.
*/
onCreated?: (rule: NumberingRuleConfig) => void;
}
export const NumberingRuleCreateDialog: React.FC<NumberingRuleCreateDialogProps> = ({
open,
onOpenChange,
tableName,
columnName,
onCreated,
}) => {
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="flex h-[80vh] max-w-4xl flex-col gap-0 overflow-hidden p-0">
<DialogHeader className="border-b border-border px-4 py-3">
<DialogTitle className="text-sm">
{tableName}
{columnName ? `.${columnName}` : ""}
</DialogTitle>
</DialogHeader>
<div className="min-h-0 flex-1">
<NumberingRuleDesigner
currentTableName={tableName}
lockedColumn={columnName ? { tableName, columnName } : undefined}
onSave={(rule) => {
onCreated?.(rule);
onOpenChange(false);
}}
/>
</div>
</DialogContent>
</Dialog>
);
};