Files
Inventory/frontend/app/shared/validation/phone.ts
Matthieu 974a4a0781 refactor : merge Inventory_frontend submodule into frontend/ directory
Merges the full git history of Inventory_frontend into the monorepo
under frontend/. Removes the submodule in favor of a unified repo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:17:57 +02:00

37 lines
1.0 KiB
TypeScript

import { normalizePhone } from '~/utils/formatters/phone'
/** Pattern used for the HTML input `pattern` attribute on phone fields. */
export const PHONE_INPUT_PATTERN = '[0-9+ .]*'
const PHONE_VALIDATION_PATTERN = /^\+?\d{7,15}$/
export type PhoneValidationResult = {
valid: boolean
error?: string
}
export const PHONE_VALIDATION_ERROR = 'Numéro de téléphone invalide'
/**
* Lightweight phone schema mirroring the API used across the app.
*/
export const phoneSchema = {
pattern: PHONE_VALIDATION_PATTERN,
message: PHONE_VALIDATION_ERROR,
validate(value: string): PhoneValidationResult {
const normalized = normalizePhone(value)
if (!normalized) {
// Empty values are considered valid; required-ness is handled by the caller.
return { valid: true }
}
if (PHONE_VALIDATION_PATTERN.test(normalized)) {
return { valid: true }
}
return { valid: false, error: PHONE_VALIDATION_ERROR }
},
}
export const isPhoneValid = (value: string): boolean => phoneSchema.validate(value).valid