feat(WEB): 입력 컴포넌트 공통화 및 UI 개선
- 숫자/통화/전화번호/사업자번호 등 특수 입력 컴포넌트 추가 - MobileCard 컴포넌트 통합 (ListMobileCard 제거) - IntegratedListTemplateV2 페이지네이션 버그 수정 (NaN 이슈) - IntegratedDetailTemplate 타이틀 중복 수정 - 문서 시스템 컴포넌트 추가 - 헤더 벨 아이콘 포커스 스타일 개선 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,8 @@ import { IntegratedDetailTemplate } from '@/components/templates/IntegratedDetai
|
||||
import { qualityInspectionCreateConfig } from './inspectionConfig';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { QuantityInput } from '@/components/ui/quantity-input';
|
||||
import { NumberInput } from '@/components/ui/number-input';
|
||||
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Alert, AlertDescription } from '@/components/ui/alert';
|
||||
@@ -217,10 +219,9 @@ export function InspectionCreate() {
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>수량</Label>
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
value={formData.quantity}
|
||||
onChange={(e) => handleInputChange('quantity', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => handleInputChange('quantity', value ?? 0)}
|
||||
placeholder="수량 입력"
|
||||
/>
|
||||
</div>
|
||||
@@ -315,11 +316,11 @@ export function InspectionCreate() {
|
||||
) : (
|
||||
<div className="space-y-2">
|
||||
<Label>측정값 입력 ({(item as MeasurementItem).unit}) *</Label>
|
||||
<Input
|
||||
type="number"
|
||||
step="0.1"
|
||||
value={(item as MeasurementItem).measuredValue || ''}
|
||||
onChange={(e) => handleMeasurementChange(item.id, e.target.value)}
|
||||
<NumberInput
|
||||
step={0.1}
|
||||
allowDecimal
|
||||
value={(item as MeasurementItem).measuredValue ?? undefined}
|
||||
onChange={(value) => handleMeasurementChange(item.id, String(value ?? ''))}
|
||||
placeholder={`측정값 입력 (${(item as MeasurementItem).unit})`}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -14,6 +14,7 @@ import { Button } from '@/components/ui/button';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { Textarea } from '@/components/ui/textarea';
|
||||
import { NumberInput } from '@/components/ui/number-input';
|
||||
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
@@ -512,11 +513,11 @@ export function InspectionDetail({ id }: InspectionDetailProps) {
|
||||
) : (
|
||||
<div className="space-y-2">
|
||||
<Label>측정값 입력 ({(item as MeasurementItem).unit}) *</Label>
|
||||
<Input
|
||||
type="number"
|
||||
step="0.1"
|
||||
value={(item as MeasurementItem).measuredValue || ''}
|
||||
onChange={(e) => handleMeasurementChange(item.id, e.target.value)}
|
||||
<NumberInput
|
||||
step={0.1}
|
||||
allowDecimal
|
||||
value={(item as MeasurementItem).measuredValue ?? undefined}
|
||||
onChange={(value) => handleMeasurementChange(item.id, String(value ?? ''))}
|
||||
placeholder={`측정값 입력 (${(item as MeasurementItem).unit})`}
|
||||
/>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
|
||||
@@ -25,7 +25,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 { getInspections, getInspectionStats } from './actions';
|
||||
import { isNextRedirectError } from '@/lib/utils/redirect-error';
|
||||
import { statusColorMap, inspectionTypeLabels } from './mockData';
|
||||
|
||||
Reference in New Issue
Block a user