feat: update branding preferences reset dialog with disabled state integration

This commit is contained in:
Catalin Pit
2026-06-25 14:41:52 +03:00
parent 3529999caa
commit ff8eebf26c
2 changed files with 20 additions and 2 deletions
@@ -14,6 +14,7 @@ import { Trans } from '@lingui/react/macro';
import { useState } from 'react';
export type BrandingPreferencesResetDialogProps = {
disabled?: boolean;
hasAdvancedBranding: boolean;
isSubmitting: boolean;
onReset: () => Promise<void>;
@@ -21,6 +22,7 @@ export type BrandingPreferencesResetDialogProps = {
};
export const BrandingPreferencesResetDialog = ({
disabled = false,
hasAdvancedBranding,
isSubmitting,
onReset,
@@ -43,10 +45,10 @@ export const BrandingPreferencesResetDialog = ({
};
return (
<Dialog open={open} onOpenChange={(value) => !isLoading && setOpen(value)}>
<Dialog open={open} onOpenChange={(value) => !isLoading && !disabled && setOpen(value)}>
<DialogTrigger asChild>
{trigger ?? (
<Button variant="destructive" type="button">
<Button variant="destructive" type="button" disabled={disabled || isLoading}>
<Trans>Reset</Trans>
</Button>
)}
@@ -2,6 +2,7 @@ import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/org
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { DEFAULT_BRAND_COLORS, DEFAULT_BRAND_RADIUS } from '@documenso/lib/constants/theme';
import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';
import { normalizeBrandingColors } from '@documenso/lib/utils/normalize-branding-colors';
import { cn } from '@documenso/ui/lib/utils';
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@documenso/ui/primitives/accordion';
import { Button } from '@documenso/ui/primitives/button';
@@ -87,6 +88,20 @@ export function BrandingPreferencesForm({
const isBrandingEnabled = form.watch('brandingEnabled');
const hasResetBrandingColors =
settings.brandingColors === null ||
settings.brandingColors === undefined ||
(parsedColors.success && normalizeBrandingColors(parsedColors.data) === null);
const isResetDisabled =
!form.formState.isDirty &&
settings.brandingEnabled === (canInherit ? null : false) &&
!settings.brandingLogo &&
!settings.brandingUrl &&
!settings.brandingCompanyDetails &&
!settings.brandingCss &&
hasResetBrandingColors;
const handleResetToDefaults = async () => {
const data: TBrandingPreferencesFormSchema = {
brandingEnabled: canInherit ? null : false,
@@ -572,6 +587,7 @@ export function BrandingPreferencesForm({
<Trans>Update</Trans>
</Button>
<BrandingPreferencesResetDialog
disabled={isResetDisabled}
hasAdvancedBranding={hasAdvancedBranding}
isSubmitting={form.formState.isSubmitting}
onReset={handleResetToDefaults}