mirror of
https://github.com/documenso/documenso.git
synced 2026-07-10 04:55:02 +10:00
feat: update branding preferences reset dialog with disabled state integration
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user