Skip to content

Commit f6b83dc

Browse files
x0sinaImMohammad20000
authored andcommitted
fix(node-modal): improve accessibility and loading state handling in node modal
1 parent 665c912 commit f6b83dc

File tree

2 files changed

+6
-12
lines changed

2 files changed

+6
-12
lines changed

dashboard/src/components/dialogs/node-modal.tsx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { LoaderButton } from '../ui/loader-button'
2020
import useDynamicErrorHandler from '@/hooks/use-dynamic-errors.ts'
2121
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'
2222
import { formatBytes, gbToBytes } from '@/utils/formatByte'
23-
import { LoadingSpinner } from '@/components/common/loading-spinner'
2423

2524
export const nodeFormSchema = z.object({
2625
name: z.string().min(1, 'Name is required'),
@@ -331,7 +330,7 @@ export default function NodeModal({ isDialogOpen, onOpenChange, form, editingNod
331330

332331
return (
333332
<Dialog open={isDialogOpen} onOpenChange={onOpenChange}>
334-
<DialogContent className="h-full max-w-full sm:max-w-[90vw] lg:h-auto lg:max-w-[1000px]" onOpenAutoFocus={e => e.preventDefault()}>
333+
<DialogContent className="h-full max-w-full sm:max-w-[90vw] lg:h-auto lg:max-w-[1000px] focus:outline-none" onOpenAutoFocus={e => e.preventDefault()}>
335334
<DialogHeader className="pb-2">
336335
<DialogTitle className={cn('text-start text-base font-semibold sm:text-lg', dir === 'rtl' && 'sm:text-right')}>{editingNode ? t('editNode.title') : t('nodeModal.title')}</DialogTitle>
337336
<p className={cn('text-start text-xs text-muted-foreground', dir === 'rtl' && 'sm:text-right')}>{editingNode ? t('nodes.prompt') : t('nodeModal.description')}</p>
@@ -391,18 +390,14 @@ export default function NodeModal({ isDialogOpen, onOpenChange, form, editingNod
391390
)}
392391
</div>
393392

394-
{isFetchingNodeData ? (
395-
<div className="flex min-h-[400px] items-center justify-center">
396-
<LoadingSpinner size="medium" />
397-
</div>
398-
) : (
399-
<Form {...form}>
400-
<form onSubmit={form.handleSubmit(onSubmit)} className="flex flex-col">
393+
<Form {...form}>
394+
<form onSubmit={form.handleSubmit(onSubmit)} className="flex flex-col">
401395
<div className={cn(
402396
"-mr-2 overflow-y-auto px-1 pr-2 sm:-mr-4 sm:px-2 sm:pr-4",
403397
showErrorDetails && connectionStatus === 'error'
404398
? "max-h-[55dvh] sm:max-h-[55dvh]"
405-
: "max-h-[65dvh] sm:max-h-[65dvh]"
399+
: "max-h-[65dvh] sm:max-h-[65dvh]",
400+
isFetchingNodeData && "pointer-events-none blur-sm"
406401
)}>
407402
<div className="flex h-full flex-col items-start gap-4 lg:flex-row">
408403
<div className="w-full flex-1 space-y-4">
@@ -1123,7 +1118,6 @@ export default function NodeModal({ isDialogOpen, onOpenChange, form, editingNod
11231118
</div>
11241119
</form>
11251120
</Form>
1126-
)}
11271121
</DialogContent>
11281122
</Dialog>
11291123
)

dashboard/src/components/ui/dialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const DialogContent = React.forwardRef<React.ElementRef<typeof DialogPrimitive.C
3030
<DialogPrimitive.Content
3131
ref={ref}
3232
className={cn(
33-
'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',
33+
'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg focus:outline-none',
3434
className,
3535
)}
3636
{...props}

0 commit comments

Comments
 (0)