refactor(FE): Make ConfirmationModal body scrollable and sticky

This commit is contained in:
rstubryan
2026-02-03 11:46:45 +07:00
parent e5d6be446a
commit 489e8a31f3
+21 -10
View File
@@ -122,10 +122,18 @@ const ConfirmationModal = ({
closeOnBackdrop={closeOnBackdrop} closeOnBackdrop={closeOnBackdrop}
className={{ className={{
...className, ...className,
modalBox: cn('rounded-xl p-4', className?.modalBox), modalBox: cn(
'rounded-xl p-4 flex flex-col gap-4 max-h-[90vh]',
className?.modalBox
),
}} }}
> >
<div className='w-full flex flex-col gap-4'> <div
className={cn(
'flex flex-col gap-4',
children && 'sticky top-0 bg-inherit z-10'
)}
>
{iconPosition === 'center' ? ( {iconPosition === 'center' ? (
<> <>
<div className='w-fit mx-auto'> <div className='w-fit mx-auto'>
@@ -164,17 +172,24 @@ const ConfirmationModal = ({
</div> </div>
</div> </div>
)} )}
</div>
{children && <div className='w-full'>{children}</div>} {children && (
<div className='w-full flex-1 overflow-y-auto'>{children}</div>
)}
{(secondaryButton || primaryButton) && ( {(secondaryButton || primaryButton) && (
<div <div
className={cn('w-full grid gap-3', { className={cn(
'w-full grid gap-3',
children && 'sticky bottom-0 bg-inherit z-10',
{
'grid-cols-2': secondaryButton && primaryButton, 'grid-cols-2': secondaryButton && primaryButton,
'grid-cols-1': 'grid-cols-1':
(secondaryButton && !primaryButton) || (secondaryButton && !primaryButton) ||
(!secondaryButton && primaryButton), (!secondaryButton && primaryButton),
})} }
)}
> >
{secondaryButton && secondaryButton.text && ( {secondaryButton && secondaryButton.text && (
<Button <Button
@@ -218,17 +233,13 @@ const ConfirmationModal = ({
? primaryButton?.isLoading ? primaryButton?.isLoading
: isPrimaryButtonLoading : isPrimaryButtonLoading
} }
className={cn( className={cn('p-2 rounded-xl text-sm', primaryButton?.className)}
'p-2 rounded-xl text-sm',
primaryButton?.className
)}
> >
{primaryButton?.text ?? 'Ya'} {primaryButton?.text ?? 'Ya'}
</Button> </Button>
)} )}
</div> </div>
)} )}
</div>
</Modal> </Modal>
); );
}; };