mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 01:15:49 +10:00
@@ -33,6 +33,7 @@ export const ZDocumentSchema = LegacyDocumentSchema.pick({
|
||||
folderId: true,
|
||||
}).extend({
|
||||
envelopeId: z.string(),
|
||||
internalVersion: z.number(),
|
||||
|
||||
// Which "Template" the document was created from.
|
||||
templateId: z
|
||||
@@ -114,6 +115,7 @@ export const ZDocumentLiteSchema = LegacyDocumentSchema.pick({
|
||||
useLegacyFieldInsertion: true,
|
||||
}).extend({
|
||||
envelopeId: z.string(),
|
||||
internalVersion: z.number(),
|
||||
|
||||
// Backwards compatibility.
|
||||
documentDataId: z.string().default(''),
|
||||
@@ -149,6 +151,7 @@ export const ZDocumentManySchema = LegacyDocumentSchema.pick({
|
||||
useLegacyFieldInsertion: true,
|
||||
}).extend({
|
||||
envelopeId: z.string(),
|
||||
internalVersion: z.number(),
|
||||
|
||||
// Backwards compatibility.
|
||||
documentDataId: z.string().default(''),
|
||||
|
||||
@@ -79,7 +79,7 @@ export const ZEnvelopeSchema = EnvelopeSchema.pick({
|
||||
type: true,
|
||||
id: true,
|
||||
data: true,
|
||||
initialData: true, // Todo: Envelopes - Maybe this hide this.
|
||||
initialData: true,
|
||||
}),
|
||||
})
|
||||
.array(),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { FieldType } from '@prisma/client';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { DEFAULT_SIGNATURE_TEXT_FONT_SIZE } from '../constants/pdf';
|
||||
|
||||
export const DEFAULT_FIELD_FONT_SIZE = 14;
|
||||
|
||||
export const ZBaseFieldMeta = z.object({
|
||||
@@ -8,6 +10,7 @@ export const ZBaseFieldMeta = z.object({
|
||||
placeholder: z.string().optional(),
|
||||
required: z.boolean().optional(),
|
||||
readOnly: z.boolean().optional(),
|
||||
fontSize: z.number().min(8).max(96).default(DEFAULT_FIELD_FONT_SIZE).optional(),
|
||||
});
|
||||
|
||||
export type TBaseFieldMeta = z.infer<typeof ZBaseFieldMeta>;
|
||||
@@ -18,7 +21,6 @@ export type TFieldTextAlignSchema = z.infer<typeof ZFieldTextAlignSchema>;
|
||||
|
||||
export const ZInitialsFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('initials'),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -26,7 +28,6 @@ export type TInitialsFieldMeta = z.infer<typeof ZInitialsFieldMeta>;
|
||||
|
||||
export const ZNameFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('name'),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -34,7 +35,6 @@ export type TNameFieldMeta = z.infer<typeof ZNameFieldMeta>;
|
||||
|
||||
export const ZEmailFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('email'),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -42,7 +42,6 @@ export type TEmailFieldMeta = z.infer<typeof ZEmailFieldMeta>;
|
||||
|
||||
export const ZDateFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('date'),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -52,7 +51,6 @@ export const ZTextFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('text'),
|
||||
text: z.string().optional(),
|
||||
characterLimit: z.number().optional(),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -64,7 +62,6 @@ export const ZNumberFieldMeta = ZBaseFieldMeta.extend({
|
||||
value: z.string().optional(),
|
||||
minValue: z.coerce.number().nullish(),
|
||||
maxValue: z.coerce.number().nullish(),
|
||||
fontSize: z.number().min(8).max(96).optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
});
|
||||
|
||||
@@ -81,6 +78,7 @@ export const ZRadioFieldMeta = ZBaseFieldMeta.extend({
|
||||
}),
|
||||
)
|
||||
.optional(),
|
||||
direction: z.enum(['vertical', 'horizontal']).optional().default('vertical'),
|
||||
});
|
||||
|
||||
export type TRadioFieldMeta = z.infer<typeof ZRadioFieldMeta>;
|
||||
@@ -111,7 +109,14 @@ export const ZDropdownFieldMeta = ZBaseFieldMeta.extend({
|
||||
|
||||
export type TDropdownFieldMeta = z.infer<typeof ZDropdownFieldMeta>;
|
||||
|
||||
export const ZSignatureFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('signature'),
|
||||
});
|
||||
|
||||
export type TSignatureFieldMeta = z.infer<typeof ZSignatureFieldMeta>;
|
||||
|
||||
export const ZFieldMetaNotOptionalSchema = z.discriminatedUnion('type', [
|
||||
ZSignatureFieldMeta,
|
||||
ZInitialsFieldMeta,
|
||||
ZNameFieldMeta,
|
||||
ZEmailFieldMeta,
|
||||
@@ -231,13 +236,13 @@ export type TFieldAndMeta = z.infer<typeof ZFieldAndMetaSchema>;
|
||||
|
||||
export const FIELD_DATE_META_DEFAULT_VALUES: TDateFieldMeta = {
|
||||
type: 'date',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
};
|
||||
|
||||
export const FIELD_TEXT_META_DEFAULT_VALUES: TTextFieldMeta = {
|
||||
type: 'text',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
label: '',
|
||||
placeholder: '',
|
||||
@@ -245,9 +250,10 @@ export const FIELD_TEXT_META_DEFAULT_VALUES: TTextFieldMeta = {
|
||||
required: false,
|
||||
readOnly: false,
|
||||
};
|
||||
|
||||
export const FIELD_NUMBER_META_DEFAULT_VALUES: TNumberFieldMeta = {
|
||||
type: 'number',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
label: '',
|
||||
placeholder: '',
|
||||
@@ -257,31 +263,34 @@ export const FIELD_NUMBER_META_DEFAULT_VALUES: TNumberFieldMeta = {
|
||||
|
||||
export const FIELD_INITIALS_META_DEFAULT_VALUES: TInitialsFieldMeta = {
|
||||
type: 'initials',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
};
|
||||
|
||||
export const FIELD_NAME_META_DEFAULT_VALUES: TNameFieldMeta = {
|
||||
type: 'name',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
};
|
||||
|
||||
export const FIELD_EMAIL_META_DEFAULT_VALUES: TEmailFieldMeta = {
|
||||
type: 'email',
|
||||
fontSize: 14,
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
textAlign: 'left',
|
||||
};
|
||||
|
||||
export const FIELD_RADIO_META_DEFAULT_VALUES: TRadioFieldMeta = {
|
||||
type: 'radio',
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
values: [{ id: 1, checked: false, value: '' }],
|
||||
required: false,
|
||||
readOnly: false,
|
||||
direction: 'vertical',
|
||||
};
|
||||
|
||||
export const FIELD_CHECKBOX_META_DEFAULT_VALUES: TCheckboxFieldMeta = {
|
||||
type: 'checkbox',
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
values: [{ id: 1, checked: false, value: '' }],
|
||||
validationRule: '',
|
||||
validationLength: 0,
|
||||
@@ -292,14 +301,20 @@ export const FIELD_CHECKBOX_META_DEFAULT_VALUES: TCheckboxFieldMeta = {
|
||||
|
||||
export const FIELD_DROPDOWN_META_DEFAULT_VALUES: TDropdownFieldMeta = {
|
||||
type: 'dropdown',
|
||||
fontSize: DEFAULT_FIELD_FONT_SIZE,
|
||||
values: [{ value: 'Option 1' }],
|
||||
defaultValue: '',
|
||||
required: false,
|
||||
readOnly: false,
|
||||
};
|
||||
|
||||
export const FIELD_SIGNATURE_META_DEFAULT_VALUES: TSignatureFieldMeta = {
|
||||
type: 'signature',
|
||||
fontSize: DEFAULT_SIGNATURE_TEXT_FONT_SIZE,
|
||||
};
|
||||
|
||||
export const FIELD_META_DEFAULT_VALUES: Record<FieldType, TFieldMetaSchema> = {
|
||||
[FieldType.SIGNATURE]: undefined,
|
||||
[FieldType.SIGNATURE]: FIELD_SIGNATURE_META_DEFAULT_VALUES,
|
||||
[FieldType.FREE_SIGNATURE]: undefined,
|
||||
[FieldType.INITIALS]: FIELD_INITIALS_META_DEFAULT_VALUES,
|
||||
[FieldType.NAME]: FIELD_NAME_META_DEFAULT_VALUES,
|
||||
|
||||
@@ -4,6 +4,7 @@ import { z } from 'zod';
|
||||
import { FieldSchema } from '@documenso/prisma/generated/zod/modelSchema/FieldSchema';
|
||||
|
||||
import {
|
||||
FIELD_SIGNATURE_META_DEFAULT_VALUES,
|
||||
ZCheckboxFieldMeta,
|
||||
ZDateFieldMeta,
|
||||
ZDropdownFieldMeta,
|
||||
@@ -12,6 +13,7 @@ import {
|
||||
ZNameFieldMeta,
|
||||
ZNumberFieldMeta,
|
||||
ZRadioFieldMeta,
|
||||
ZSignatureFieldMeta,
|
||||
ZTextFieldMeta,
|
||||
} from './field-meta';
|
||||
|
||||
@@ -91,7 +93,7 @@ export type TFieldText = z.infer<typeof ZFieldTextSchema>;
|
||||
|
||||
export const ZFieldSignatureSchema = BaseFieldSchemaUsingNumbers.extend({
|
||||
type: z.literal(FieldType.SIGNATURE),
|
||||
fieldMeta: z.literal(null),
|
||||
fieldMeta: ZSignatureFieldMeta.catch(FIELD_SIGNATURE_META_DEFAULT_VALUES),
|
||||
});
|
||||
|
||||
export type TFieldSignature = z.infer<typeof ZFieldSignatureSchema>;
|
||||
|
||||
@@ -30,6 +30,8 @@ export const ZClaimFlagsSchema = z.object({
|
||||
cfr21: z.boolean().optional(),
|
||||
|
||||
authenticationPortal: z.boolean().optional(),
|
||||
|
||||
allowEnvelopes: z.boolean().optional(),
|
||||
});
|
||||
|
||||
export type TClaimFlags = z.infer<typeof ZClaimFlagsSchema>;
|
||||
@@ -82,6 +84,10 @@ export const SUBSCRIPTION_CLAIM_FEATURE_FLAGS: Record<
|
||||
key: 'authenticationPortal',
|
||||
label: 'Authentication portal',
|
||||
},
|
||||
allowEnvelopes: {
|
||||
key: 'allowEnvelopes',
|
||||
label: 'Allow envelopes',
|
||||
},
|
||||
};
|
||||
|
||||
export enum INTERNAL_CLAIM_ID {
|
||||
@@ -105,6 +111,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Free',
|
||||
teamCount: 1,
|
||||
memberCount: 1,
|
||||
envelopeItemCount: 5,
|
||||
locked: true,
|
||||
flags: {},
|
||||
},
|
||||
@@ -113,6 +120,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Individual',
|
||||
teamCount: 1,
|
||||
memberCount: 1,
|
||||
envelopeItemCount: 5,
|
||||
locked: true,
|
||||
flags: {
|
||||
unlimitedDocuments: true,
|
||||
@@ -123,6 +131,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Teams',
|
||||
teamCount: 1,
|
||||
memberCount: 5,
|
||||
envelopeItemCount: 5,
|
||||
locked: true,
|
||||
flags: {
|
||||
unlimitedDocuments: true,
|
||||
@@ -135,6 +144,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Platform',
|
||||
teamCount: 1,
|
||||
memberCount: 0,
|
||||
envelopeItemCount: 10,
|
||||
locked: true,
|
||||
flags: {
|
||||
unlimitedDocuments: true,
|
||||
@@ -152,6 +162,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Enterprise',
|
||||
teamCount: 0,
|
||||
memberCount: 0,
|
||||
envelopeItemCount: 10,
|
||||
locked: true,
|
||||
flags: {
|
||||
unlimitedDocuments: true,
|
||||
@@ -171,6 +182,7 @@ export const internalClaims: InternalClaims = {
|
||||
name: 'Early Adopter',
|
||||
teamCount: 0,
|
||||
memberCount: 0,
|
||||
envelopeItemCount: 5,
|
||||
locked: true,
|
||||
flags: {
|
||||
unlimitedDocuments: true,
|
||||
|
||||
Reference in New Issue
Block a user