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'; import { useState } from 'react';
export type BrandingPreferencesResetDialogProps = { export type BrandingPreferencesResetDialogProps = {
disabled?: boolean;
hasAdvancedBranding: boolean; hasAdvancedBranding: boolean;
isSubmitting: boolean; isSubmitting: boolean;
onReset: () => Promise<void>; onReset: () => Promise<void>;
@@ -21,6 +22,7 @@ export type BrandingPreferencesResetDialogProps = {
}; };
export const BrandingPreferencesResetDialog = ({ export const BrandingPreferencesResetDialog = ({
disabled = false,
hasAdvancedBranding, hasAdvancedBranding,
isSubmitting, isSubmitting,
onReset, onReset,
@@ -43,10 +45,10 @@ export const BrandingPreferencesResetDialog = ({
}; };
return ( return (
<Dialog open={open} onOpenChange={(value) => !isLoading && setOpen(value)}> <Dialog open={open} onOpenChange={(value) => !isLoading && !disabled && setOpen(value)}>
<DialogTrigger asChild> <DialogTrigger asChild>
{trigger ?? ( {trigger ?? (
<Button variant="destructive" type="button"> <Button variant="destructive" type="button" disabled={disabled || isLoading}>
<Trans>Reset</Trans> <Trans>Reset</Trans>
</Button> </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 { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { DEFAULT_BRAND_COLORS, DEFAULT_BRAND_RADIUS } from '@documenso/lib/constants/theme'; import { DEFAULT_BRAND_COLORS, DEFAULT_BRAND_RADIUS } from '@documenso/lib/constants/theme';
import { ZCssVarsSchema } from '@documenso/lib/types/css-vars'; 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 { cn } from '@documenso/ui/lib/utils';
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@documenso/ui/primitives/accordion'; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@documenso/ui/primitives/accordion';
import { Button } from '@documenso/ui/primitives/button'; import { Button } from '@documenso/ui/primitives/button';
@@ -87,6 +88,20 @@ export function BrandingPreferencesForm({
const isBrandingEnabled = form.watch('brandingEnabled'); 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 handleResetToDefaults = async () => {
const data: TBrandingPreferencesFormSchema = { const data: TBrandingPreferencesFormSchema = {
brandingEnabled: canInherit ? null : false, brandingEnabled: canInherit ? null : false,
@@ -572,6 +587,7 @@ export function BrandingPreferencesForm({
<Trans>Update</Trans> <Trans>Update</Trans>
</Button> </Button>
<BrandingPreferencesResetDialog <BrandingPreferencesResetDialog
disabled={isResetDisabled}
hasAdvancedBranding={hasAdvancedBranding} hasAdvancedBranding={hasAdvancedBranding}
isSubmitting={form.formState.isSubmitting} isSubmitting={form.formState.isSubmitting}
onReset={handleResetToDefaults} onReset={handleResetToDefaults}