a5bbd1eb7c
- 옛 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>
57 lines
1.9 KiB
TypeScript
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>
|
|
);
|
|
};
|