refactor: UniversalListPage externalIsLoading 지원 및 스켈레톤 개선

- UniversalListPage에 externalIsLoading prop 추가
- CardTransactionDetailClient DevFill 자동입력 기능 추가
- 여러 컴포넌트 로딩 상태 처리 개선
- skeleton 컴포넌트 확장

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-01-22 20:54:16 +09:00
parent 207520e1d6
commit 19237be4aa
71 changed files with 244 additions and 155 deletions

View File

@@ -9,7 +9,7 @@
import { useState, useEffect, useMemo } from 'react';
import { Check, X, ChevronDown, ChevronRight } from 'lucide-react';
import { ContentLoadingSpinner } from '@/components/ui/loading-spinner';
import { ContentSkeleton } from '@/components/ui/skeleton';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import {
@@ -290,7 +290,7 @@ export function AssigneeSelectModal({
{/* 컨텐츠 영역 */}
<div className="max-h-[400px] overflow-y-auto">
{loading ? (
<ContentLoadingSpinner text="부서 목록을 불러오는 중..." />
<ContentSkeleton type="list" rows={6} />
) : error ? (
<div className="flex flex-col items-center justify-center py-12 text-center">
<p className="text-red-500 mb-2">{error}</p>

View File

@@ -7,7 +7,7 @@
import { useState, useEffect, useCallback } from 'react';
import { Search, FileText } from 'lucide-react';
import { ContentLoadingSpinner } from '@/components/ui/loading-spinner';
import { ContentSkeleton } from '@/components/ui/skeleton';
import {
Dialog,
DialogContent,
@@ -121,7 +121,7 @@ export function SalesOrderSelectModal({
{/* 수주 목록 */}
<div className="max-h-[400px] overflow-y-auto space-y-2">
{isLoading ? (
<ContentLoadingSpinner text="수주 목록을 불러오는 중..." />
<ContentSkeleton type="cards" rows={4} />
) : salesOrders.map((order) => (
<div
key={order.id}

View File

@@ -513,6 +513,7 @@ export function WorkOrderCreate() {
<IntegratedDetailTemplate
config={workOrderCreateConfig}
mode="create"
isLoading={isLoadingProcesses}
isSubmitting={isSubmitting}
onBack={handleCancel}
onCancel={handleCancel}