- Extract CustomFieldInputGrid.vue from 6 duplicated template blocks (~70 lines each) - Extract EntityHistorySection.vue from 3 identical history sections in edit pages - Extract useDragReorder composable from 4 identical drag-and-drop implementations in StructureNodeEditor (~330 lines → ~30) - Extract catalogDisplayUtils.ts (resolvePrimaryDocument, resolveSupplierNames, buildSuppliersDisplay) - Remove redundant computed wrappers (historyEntries, loadingTypes, selectedFiles) - Remove unused imports (fieldKey, historyActionLabel, formatHistoryDate, *HistoryEntry types) - Move Intl.DateTimeFormat to module-level in date.ts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
23 lines
613 B
TypeScript
23 lines
613 B
TypeScript
/**
|
|
* Formatte une date en respectant les conventions françaises (jj/mm/aaaa).
|
|
* Retourne "—" si la valeur est invalide ou absente.
|
|
*/
|
|
const frenchDateFormatter = new Intl.DateTimeFormat('fr-FR', {
|
|
day: '2-digit',
|
|
month: '2-digit',
|
|
year: 'numeric',
|
|
})
|
|
|
|
export const formatFrenchDate = (value: Date | string | number | null | undefined): string => {
|
|
if (value === null || value === undefined || value === '') {
|
|
return '—'
|
|
}
|
|
|
|
const date = value instanceof Date ? value : new Date(value)
|
|
if (Number.isNaN(date.getTime())) {
|
|
return '—'
|
|
}
|
|
|
|
return frenchDateFormatter.format(date)
|
|
}
|