mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 00:03:33 +10:00
feat: add custom font sizes to fields (#1376)
Adds custom font sizes to fields https://github.com/user-attachments/assets/1473a4d7-8dc6-4ead-acf5-dd78be7782a0
This commit is contained in:
@ -1,15 +1,10 @@
|
||||
import { checkboxValidationSigns } from '@documenso/ui/primitives/document-flow/field-items-advanced-settings/constants';
|
||||
|
||||
interface CheckboxFieldMeta {
|
||||
readOnly?: boolean;
|
||||
required?: boolean;
|
||||
validationRule?: string;
|
||||
validationLength?: number;
|
||||
}
|
||||
import type { TCheckboxFieldMeta } from '../types/field-meta';
|
||||
|
||||
export const validateCheckboxField = (
|
||||
values: string[],
|
||||
fieldMeta: CheckboxFieldMeta,
|
||||
fieldMeta: TCheckboxFieldMeta,
|
||||
isSigningPage: boolean = false,
|
||||
): string[] => {
|
||||
const errors = [];
|
||||
|
||||
@ -1,14 +1,10 @@
|
||||
interface DropdownFieldMeta {
|
||||
readOnly?: boolean;
|
||||
required?: boolean;
|
||||
values?: { value: string }[];
|
||||
defaultValue?: string;
|
||||
}
|
||||
import type { TDropdownFieldMeta as DropdownFieldMeta } from '../types/field-meta';
|
||||
|
||||
export const validateDropdownField = (
|
||||
value: string | undefined,
|
||||
fieldMeta: DropdownFieldMeta,
|
||||
isSigningPage: boolean = false,
|
||||
fontSize?: number,
|
||||
): string[] => {
|
||||
const errors = [];
|
||||
|
||||
@ -50,5 +46,9 @@ export const validateDropdownField = (
|
||||
errors.push('Duplicate values are not allowed');
|
||||
}
|
||||
|
||||
if (fontSize && (fontSize < 8 || fontSize > 96)) {
|
||||
errors.push('Font size must be between 8 and 96.');
|
||||
}
|
||||
|
||||
return errors;
|
||||
};
|
||||
|
||||
19
packages/lib/advanced-fields-validation/validate-fields.ts
Normal file
19
packages/lib/advanced-fields-validation/validate-fields.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import type {
|
||||
TDateFieldMeta as DateFieldMeta,
|
||||
TEmailFieldMeta as EmailFieldMeta,
|
||||
TInitialsFieldMeta as InitialsFieldMeta,
|
||||
TNameFieldMeta as NameFieldMeta,
|
||||
} from '../types/field-meta';
|
||||
|
||||
export const validateFields = (
|
||||
fieldMeta: DateFieldMeta | EmailFieldMeta | InitialsFieldMeta | NameFieldMeta,
|
||||
): string[] => {
|
||||
const errors = [];
|
||||
const { fontSize } = fieldMeta;
|
||||
|
||||
if (fontSize && (fontSize < 8 || fontSize > 96)) {
|
||||
errors.push('Font size must be between 8 and 96.');
|
||||
}
|
||||
|
||||
return errors;
|
||||
};
|
||||
@ -1,12 +1,5 @@
|
||||
// import { numberFormatValues } from '@documenso/ui/primitives/document-flow/field-items-advanced-settings/constants';
|
||||
|
||||
interface NumberFieldMeta {
|
||||
minValue?: number;
|
||||
maxValue?: number;
|
||||
readOnly?: boolean;
|
||||
required?: boolean;
|
||||
numberFormat?: string;
|
||||
}
|
||||
import type { TNumberFieldMeta as NumberFieldMeta } from '../types/field-meta';
|
||||
|
||||
export const validateNumberField = (
|
||||
value: string,
|
||||
@ -15,7 +8,7 @@ export const validateNumberField = (
|
||||
): string[] => {
|
||||
const errors = [];
|
||||
|
||||
const { minValue, maxValue, readOnly, required, numberFormat } = fieldMeta || {};
|
||||
const { minValue, maxValue, readOnly, required, numberFormat, fontSize } = fieldMeta || {};
|
||||
|
||||
const formatRegex: { [key: string]: RegExp } = {
|
||||
'123,456,789.00': /^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d{1,2})?$/,
|
||||
@ -63,5 +56,9 @@ export const validateNumberField = (
|
||||
errors.push('A field cannot be both read-only and required');
|
||||
}
|
||||
|
||||
if (fontSize && (fontSize < 8 || fontSize > 96)) {
|
||||
errors.push('Font size must be between 8 and 96.');
|
||||
}
|
||||
|
||||
return errors;
|
||||
};
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
interface RadioFieldMeta {
|
||||
readOnly?: boolean;
|
||||
required?: boolean;
|
||||
values?: { checked: boolean; value: string }[];
|
||||
}
|
||||
import type { TRadioFieldMeta as RadioFieldMeta } from '../types/field-meta';
|
||||
|
||||
export const validateRadioField = (
|
||||
value: string | undefined,
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
interface TextFieldMeta {
|
||||
characterLimit?: number;
|
||||
readOnly?: boolean;
|
||||
required?: boolean;
|
||||
}
|
||||
import type { TTextFieldMeta as TextFieldMeta } from '../types/field-meta';
|
||||
|
||||
export const validateTextField = (
|
||||
value: string,
|
||||
@ -11,7 +7,7 @@ export const validateTextField = (
|
||||
): string[] => {
|
||||
const errors = [];
|
||||
|
||||
const { characterLimit, readOnly, required } = fieldMeta;
|
||||
const { characterLimit, readOnly, required, fontSize } = fieldMeta;
|
||||
|
||||
if (required && !value && isSigningPage) {
|
||||
errors.push('Value is required');
|
||||
@ -29,5 +25,9 @@ export const validateTextField = (
|
||||
errors.push('A field cannot be both read-only and required');
|
||||
}
|
||||
|
||||
if (fontSize && (fontSize < 8 || fontSize > 96)) {
|
||||
errors.push('Font size must be between 8 and 96.');
|
||||
}
|
||||
|
||||
return errors;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user