diff --git a/src/renderer/components/team/TeamListView.tsx b/src/renderer/components/team/TeamListView.tsx index aec4e73a..edd4bbf2 100644 --- a/src/renderer/components/team/TeamListView.tsx +++ b/src/renderer/components/team/TeamListView.tsx @@ -6,6 +6,13 @@ import { api, isElectronMode } from '@renderer/api'; import { confirm } from '@renderer/components/common/ConfirmDialog'; import { Badge } from '@renderer/components/ui/badge'; import { Button } from '@renderer/components/ui/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from '@renderer/components/ui/dialog'; import { Input } from '@renderer/components/ui/input'; import { Tooltip, @@ -45,6 +52,7 @@ import { Copy, FolderOpen, GitBranch, + Loader2, Play, RotateCcw, Search, @@ -84,6 +92,45 @@ const LaunchTeamDialog = lazy(() => import('./dialogs/LaunchTeamDialog').then((m) => ({ default: m.LaunchTeamDialog })) ); +interface CreateTeamDialogLoadingFallbackProps { + readonly isCopy: boolean; + readonly onClose: () => void; +} + +const CreateTeamDialogLoadingFallback = ({ + isCopy, + onClose, +}: CreateTeamDialogLoadingFallbackProps): React.JSX.Element => { + const { t } = useAppTranslation('team'); + const { t: tCommon } = useAppTranslation('common'); + + return ( + { + if (!nextOpen) { + onClose(); + } + }} + > + + + + {isCopy ? t('create.title.copy') : t('create.title.create')} + + + {tCommon('states.loading')} + + + + + {tCommon('states.loading')} + + + + ); +}; + function generateUniqueName(sourceName: string, existingNames: string[]): string { const base = sourceName.replace(/-\d+$/, ''); const existing = new Set(existingNames); @@ -1021,7 +1068,14 @@ export const TeamListView = memo(function TeamListView(): React.JSX.Element { } const createDialogElement = showCreateDialog && ( - + + } + >