feat(WEB): 입력 컴포넌트 공통화 및 UI 개선
- 숫자/통화/전화번호/사업자번호 등 특수 입력 컴포넌트 추가 - MobileCard 컴포넌트 통합 (ListMobileCard 제거) - IntegratedListTemplateV2 페이지네이션 버그 수정 (NaN 이슈) - IntegratedDetailTemplate 타이틀 중복 수정 - 문서 시스템 컴포넌트 추가 - 헤더 벨 아이콘 포커스 스타일 개선 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import { Button } from '@/components/ui/button';
|
||||
import { ContentLoadingSpinner } from '@/components/ui/loading-spinner';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { QuantityInput } from '@/components/ui/quantity-input';
|
||||
import { Card, CardContent } from '@/components/ui/card';
|
||||
import { Switch } from '@/components/ui/switch';
|
||||
import {
|
||||
@@ -198,12 +199,11 @@ export function LeavePolicyManagement() {
|
||||
<div className="space-y-2">
|
||||
<Label>기본 연차 일수</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
min={0}
|
||||
max={100}
|
||||
value={settings.defaultAnnualLeave}
|
||||
onChange={(e) => updateField('defaultAnnualLeave', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => updateField('defaultAnnualLeave', value ?? 0)}
|
||||
className="w-20"
|
||||
/>
|
||||
<span className="text-sm text-muted-foreground">일</span>
|
||||
@@ -214,12 +214,11 @@ export function LeavePolicyManagement() {
|
||||
<div className="space-y-2">
|
||||
<Label>근속년수당 추가 연차</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
min={0}
|
||||
max={10}
|
||||
value={settings.additionalLeavePerYear}
|
||||
onChange={(e) => updateField('additionalLeavePerYear', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => updateField('additionalLeavePerYear', value ?? 0)}
|
||||
className="w-20"
|
||||
/>
|
||||
<span className="text-sm text-muted-foreground">일</span>
|
||||
@@ -230,12 +229,11 @@ export function LeavePolicyManagement() {
|
||||
<div className="space-y-2">
|
||||
<Label>최대 연차 일수</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
min={0}
|
||||
max={100}
|
||||
value={settings.maxAnnualLeave}
|
||||
onChange={(e) => updateField('maxAnnualLeave', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => updateField('maxAnnualLeave', value ?? 0)}
|
||||
className="w-20"
|
||||
/>
|
||||
<span className="text-sm text-muted-foreground">일</span>
|
||||
@@ -276,12 +274,11 @@ export function LeavePolicyManagement() {
|
||||
<div className="space-y-2">
|
||||
<Label>최대 이월 일수</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
min={0}
|
||||
max={100}
|
||||
value={settings.carryOverMaxDays}
|
||||
onChange={(e) => updateField('carryOverMaxDays', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => updateField('carryOverMaxDays', value ?? 0)}
|
||||
className="w-20"
|
||||
/>
|
||||
<span className="text-sm text-muted-foreground">일</span>
|
||||
@@ -292,12 +289,11 @@ export function LeavePolicyManagement() {
|
||||
<div className="space-y-2">
|
||||
<Label>이월 연차 소멸 기간</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
<Input
|
||||
type="number"
|
||||
<QuantityInput
|
||||
min={0}
|
||||
max={24}
|
||||
value={settings.carryOverExpiryMonths}
|
||||
onChange={(e) => updateField('carryOverExpiryMonths', parseInt(e.target.value) || 0)}
|
||||
onChange={(value) => updateField('carryOverExpiryMonths', value ?? 0)}
|
||||
className="w-20"
|
||||
/>
|
||||
<span className="text-sm text-muted-foreground">개월</span>
|
||||
|
||||
Reference in New Issue
Block a user