mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 09:25:08 +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';
|
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}
|
||||||
|
|||||||
Reference in New Issue
Block a user