feat(WEB): 입력 컴포넌트 공통화 및 UI 개선
- 숫자/통화/전화번호/사업자번호 등 특수 입력 컴포넌트 추가 - MobileCard 컴포넌트 통합 (ListMobileCard 제거) - IntegratedListTemplateV2 페이지네이션 버그 수정 (NaN 이슈) - IntegratedDetailTemplate 타이틀 중복 수정 - 문서 시스템 컴포넌트 추가 - 헤더 벨 아이콘 포커스 스타일 개선 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,6 +52,7 @@ import {
|
||||
} from '@/components/ui/dialog';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { PhoneInput } from '@/components/ui/phone-input';
|
||||
import { VisuallyHidden } from '@radix-ui/react-visually-hidden';
|
||||
import { IntegratedDetailTemplate } from '@/components/templates/IntegratedDetailTemplate';
|
||||
import { shipmentConfig } from './shipmentConfig';
|
||||
@@ -649,12 +650,12 @@ export function ShipmentDetail({ id }: ShipmentDetailProps) {
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="driverContact">운전자 연락처 (선택)</Label>
|
||||
<Input
|
||||
<PhoneInput
|
||||
id="driverContact"
|
||||
placeholder="010-0000-0000"
|
||||
value={statusFormData.driverContact}
|
||||
onChange={(e) =>
|
||||
setStatusFormData((prev) => ({ ...prev, driverContact: e.target.value }))
|
||||
onChange={(value) =>
|
||||
setStatusFormData((prev) => ({ ...prev, driverContact: value }))
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -11,6 +11,8 @@ import { useRouter } from 'next/navigation';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { Textarea } from '@/components/ui/textarea';
|
||||
import { CurrencyInput } from '@/components/ui/currency-input';
|
||||
import { PhoneInput } from '@/components/ui/phone-input';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Alert, AlertDescription } from '@/components/ui/alert';
|
||||
@@ -414,10 +416,9 @@ export function ShipmentEdit({ id }: ShipmentEditProps) {
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>운송비</Label>
|
||||
<Input
|
||||
type="number"
|
||||
value={formData.shippingCost || ''}
|
||||
onChange={(e) => handleInputChange('shippingCost', parseInt(e.target.value) || undefined)}
|
||||
<CurrencyInput
|
||||
value={formData.shippingCost || 0}
|
||||
onChange={(value) => handleInputChange('shippingCost', value ?? undefined)}
|
||||
placeholder="0"
|
||||
disabled={isSubmitting}
|
||||
/>
|
||||
@@ -435,9 +436,9 @@ export function ShipmentEdit({ id }: ShipmentEditProps) {
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>운전자 연락처</Label>
|
||||
<Input
|
||||
<PhoneInput
|
||||
value={formData.driverContact || ''}
|
||||
onChange={(e) => handleInputChange('driverContact', e.target.value)}
|
||||
onChange={(value) => handleInputChange('driverContact', value)}
|
||||
placeholder="010-0000-0000"
|
||||
disabled={isSubmitting}
|
||||
/>
|
||||
|
||||
@@ -36,7 +36,7 @@ import {
|
||||
type StatCard,
|
||||
type ListParams,
|
||||
} from '@/components/templates/UniversalListPage';
|
||||
import { ListMobileCard, InfoField } from '@/components/organisms/ListMobileCard';
|
||||
import { ListMobileCard, InfoField } from '@/components/organisms/MobileCard';
|
||||
import { getShipments, getShipmentStats, getShipmentStatsByStatus } from './actions';
|
||||
import {
|
||||
SHIPMENT_STATUS_LABELS,
|
||||
|
||||
Reference in New Issue
Block a user