DatePicker 공통화: - date-picker.tsx 공통 컴포넌트 신규 추가 - 전체 폼 컴포넌트 DatePicker 통일 적용 (50+ 파일) - DateRangeSelector 개선 공정관리: - RuleModal 대폭 리팩토링 (-592줄 → 간소화) - ProcessForm, StepForm 개선 - ProcessDetail 수정, actions 확장 작업자화면: - WorkerScreen 기능 대폭 확장 (+543줄) - WorkItemCard 개선 - types 확장 회계/인사/영업/품질: - BadDebtDetail, BillDetail, DepositDetail, SalesDetail 등 DatePicker 적용 - EmployeeForm, VacationDialog 등 DatePicker 적용 - OrderRegistration, QuoteRegistration DatePicker 적용 - InspectionCreate, InspectionDetail DatePicker 적용 공사관리/CEO대시보드: - BiddingDetail, ContractDetail, HandoverReport 등 DatePicker 적용 - ScheduleDetailModal, TodayIssueSection 개선 기타: - WorkOrderCreate/Edit/Detail/List 개선 - ShipmentCreate/Edit, ReceivingDetail 개선 - calendar, calendarEvents 수정 - datepicker 마이그레이션 체크리스트 추가 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
/**
|
|
* 날짜 입력 필드 컴포넌트
|
|
* 기존 ItemForm과 100% 동일한 디자인
|
|
*/
|
|
|
|
'use client';
|
|
|
|
import { Label } from '@/components/ui/label';
|
|
import { DatePicker } from '@/components/ui/date-picker';
|
|
import type { DynamicFieldRendererProps } from '../types';
|
|
|
|
export function DateField({
|
|
field,
|
|
value,
|
|
onChange,
|
|
error,
|
|
disabled,
|
|
}: DynamicFieldRendererProps) {
|
|
const fieldKey = field.field_key || `field_${field.id}`;
|
|
const stringValue = value !== null && value !== undefined ? String(value) : '';
|
|
|
|
return (
|
|
<div>
|
|
<Label htmlFor={fieldKey}>
|
|
{field.field_name}
|
|
{field.is_required && <span className="text-red-500"> *</span>}
|
|
</Label>
|
|
<DatePicker
|
|
value={stringValue}
|
|
onChange={(date) => onChange(date)}
|
|
disabled={disabled}
|
|
className={error ? 'border-red-500' : ''}
|
|
/>
|
|
{error && (
|
|
<p className="text-xs text-red-500 mt-1">{error}</p>
|
|
)}
|
|
{!error && field.description && (
|
|
<p className="text-xs text-muted-foreground mt-1">
|
|
* {field.description}
|
|
</p>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|