codevdesign 0.0.75 → 0.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/composants/validateurs.ts +183 -183
- package/locales/fr.json +6 -0
- package/package.json +1 -1
|
@@ -1,183 +1,183 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { ChoixLangue } from '@/enums/choixLangue'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Valide que le champ contient une valeur définie et non vide.
|
|
6
|
-
* Accepte les chaînes de caractères non vides, les nombres différents de 0,
|
|
7
|
-
* et toute autre valeur définie (ex. objets sélectionnés dans un v-select).
|
|
8
|
-
*
|
|
9
|
-
* @param valeur La valeur saisie ou sélectionnée dans le champ.
|
|
10
|
-
* @returns true si la valeur est considérée comme valide, sinon retourne un message d'erreur.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export function estRequis(valeur: unknown, t: (key: string, params?: any) => string): true | string {
|
|
14
|
-
if (valeur == null) return t('validateurs.estRequis')
|
|
15
|
-
|
|
16
|
-
if (typeof valeur === 'number' && isNaN(valeur)) return t('validateurs.estRequis')
|
|
17
|
-
|
|
18
|
-
if (typeof valeur === 'string') {
|
|
19
|
-
return valeur.trim().length > 0 || t('validateurs.estRequis')
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return true // On considère tout le reste comme valide (ex: number, object, etc.)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Valide que le champ contient une valeur qui est d'une longeur minimale.
|
|
27
|
-
* @param valeur La valeur saisie du champ texte.
|
|
28
|
-
* @param min La longeur minimale de la valeur.
|
|
29
|
-
* @returns true si la longeur de la valeur est égale ou supérieure au minimum, sinon retourne un message d'erreur.
|
|
30
|
-
*/
|
|
31
|
-
export function estMinimumLongueur(valeur: string, min: number, t: (key: string, params?: any) => string) {
|
|
32
|
-
if (min <= 0) {
|
|
33
|
-
min = 1
|
|
34
|
-
console.warn(
|
|
35
|
-
'CsqcValidateurs (estMinimumLongeur) - Une valeur négative ou égale à 0 a été reçue. Assurez-vous de passer une valeur supérieur à 0 dans la fonction estMinimumLongeur. La valeur a été mise à 1.',
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
return (valeur && valeur.trim().length >= min) || t('validateurs.estMinimumLongueur', { nbCaracteres: min })
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Valide que le champ contient une valeur qui ne dépasse pas une longeur maximale.
|
|
43
|
-
* @param valeur La valeur saisie du champ texte.
|
|
44
|
-
* @param max La longeur maximale (inclusive) de la valeur.
|
|
45
|
-
* @returns true si la longeur de la valeur est inférieure ou égale au maximum, sinon retourne un message d'erreur.
|
|
46
|
-
*/
|
|
47
|
-
export function estMaximumLongueur(valeur: string, max: number, t: (key: string, params?: any) => string) {
|
|
48
|
-
if (max < 1) {
|
|
49
|
-
max = 1
|
|
50
|
-
console.warn(
|
|
51
|
-
'CsqcValidateurs (estMaximumLongueur) - Une valeur négative ou égale à 0 a été reçue. Assurez-vous de passer une valeur supérieur à 0 dans la fonction estMaximumLongueur. La valeur a été mise à 1.',
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return (valeur && valeur.trim().length <= max) || t('validateurs.estMaximumLongueur', { nbCaracteres: max })
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Vérifie qu'une valeur passée en paramètre est unique parmis une liste de valeurs. La validation du bilinguisme sera appliquée
|
|
60
|
-
* selon la langue CSS configurée et passée en option.
|
|
61
|
-
* @param valeur La valeur a vérifier
|
|
62
|
-
* @param modele L'instance d'un modèle avec un primary key id
|
|
63
|
-
* @param options Les configurations de la fonction
|
|
64
|
-
* @returns Vrai si la valeur est unique, ou une string d'erreur si un doublon est trouvé.
|
|
65
|
-
*/
|
|
66
|
-
export function estUniqueBilingue<T extends ModeleAvecId>(
|
|
67
|
-
valeur: string,
|
|
68
|
-
modele: T,
|
|
69
|
-
options: EstUniqueOptionsBilingue<T>,
|
|
70
|
-
t: (key: string, params?: any) => string,
|
|
71
|
-
) {
|
|
72
|
-
// Affectations valeurs par défaut
|
|
73
|
-
const { champs, langueCss, valeurs } = options
|
|
74
|
-
if (!langueCss) options.langueCss = ChoixLangue.Francais
|
|
75
|
-
valeur = valeur.toLowerCase().trim()
|
|
76
|
-
|
|
77
|
-
switch (langueCss) {
|
|
78
|
-
case ChoixLangue.Anglais:
|
|
79
|
-
if (!champs.Anglais) {
|
|
80
|
-
console.error(
|
|
81
|
-
'CsqcValidateurs (estUnique) - Le champ anglais doit être speçifié lorsque la langueCss est en anglais.',
|
|
82
|
-
)
|
|
83
|
-
throw Error(
|
|
84
|
-
'CsqcValidateurs (estUnique) - Le champ anglais doit être speçifié lorsque la langueCss est en anglais.',
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
return (
|
|
88
|
-
!valeurs.find(
|
|
89
|
-
e =>
|
|
90
|
-
(e[champs.Anglais!] as string) != null &&
|
|
91
|
-
(e[champs.Anglais!] as string).toLowerCase().trim() === valeur &&
|
|
92
|
-
e.id !== modele.id,
|
|
93
|
-
) || t('validateurs.estUnique', { valeurExistante: valeur })
|
|
94
|
-
)
|
|
95
|
-
case ChoixLangue.Francais:
|
|
96
|
-
if (!champs.Francais) {
|
|
97
|
-
console.error(
|
|
98
|
-
'CsqcValidateurs (estUnique) - Le champ français doit être speçifié lorsque la langueCss est en français.',
|
|
99
|
-
)
|
|
100
|
-
throw Error(
|
|
101
|
-
'CsqcValidateurs (estUnique) - Le champ français doit être speçifié lorsque la langueCss est en français.',
|
|
102
|
-
)
|
|
103
|
-
}
|
|
104
|
-
return (
|
|
105
|
-
valeurs.find(
|
|
106
|
-
e =>
|
|
107
|
-
(e[champs.Francais!] as string) != null &&
|
|
108
|
-
(e[champs.Francais!] as string).toLowerCase().trim() === valeur &&
|
|
109
|
-
e.id !== modele.id,
|
|
110
|
-
) == null || t('validateurs.estUnique', { valeurExistante: valeur })
|
|
111
|
-
)
|
|
112
|
-
case ChoixLangue.Bilingue:
|
|
113
|
-
if (!champs.Anglais || !champs.Francais) {
|
|
114
|
-
console.error(
|
|
115
|
-
"CsqcValidateurs (estUnique) - Les deux champs (français et anglais) doivent être speçifiés lorsque qu'on est en mode de validation bilingue.",
|
|
116
|
-
)
|
|
117
|
-
throw Error(
|
|
118
|
-
"CsqcValidateurs (estUnique) - Les deux champs (français et anglais) doivent être speçifiés lorsque qu'on est en mode de validation bilingue.",
|
|
119
|
-
)
|
|
120
|
-
}
|
|
121
|
-
const estUnique =
|
|
122
|
-
valeurs.find(
|
|
123
|
-
e =>
|
|
124
|
-
((e[champs.Francais!] != null && (e[champs.Francais!] as string).toLowerCase().trim() === valeur) ||
|
|
125
|
-
(e[champs.Anglais!] != null && (e[champs.Anglais!] as string).toLowerCase().trim() === valeur)) &&
|
|
126
|
-
e.id !== modele.id,
|
|
127
|
-
) == null
|
|
128
|
-
return estUnique || t('validateurs.estUnique', { valeurExistante: valeur })
|
|
129
|
-
default:
|
|
130
|
-
break
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
throw Error('pas supposé être ici')
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Vérifie qu'une valeur passée en paramètre est unique parmis une liste de valeurs.
|
|
138
|
-
* @param valeur La valeur a vérifier
|
|
139
|
-
* @param modele L'instance d'un modèle avec un primary key id
|
|
140
|
-
* @param options Les configurations de la fonction
|
|
141
|
-
* @returns Vrai si la valeur est unique, ou une string d'erreur si un doublon est trouvé.
|
|
142
|
-
*/
|
|
143
|
-
export function estUnique<T extends ModeleAvecId>(
|
|
144
|
-
valeur: string,
|
|
145
|
-
modele: T,
|
|
146
|
-
options: EstUniqueOptions<T>,
|
|
147
|
-
t: (key: string, params?: any) => string,
|
|
148
|
-
) {
|
|
149
|
-
const { champ, valeurs } = options
|
|
150
|
-
return (
|
|
151
|
-
!valeurs.some(
|
|
152
|
-
e =>
|
|
153
|
-
e[champ] != null &&
|
|
154
|
-
(e[champ] as string).toLowerCase().trim() === valeur.toLowerCase().trim() &&
|
|
155
|
-
e.id !== modele.id,
|
|
156
|
-
) || t('validateurs.estUnique', { valeurExistante: valeur })
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
type ModeleAvecId = { id: number }
|
|
161
|
-
|
|
162
|
-
type ValeursChampEstUniqueOptions<ModeleAvecId> = {
|
|
163
|
-
['Francais']?: keyof ModeleAvecId
|
|
164
|
-
['Anglais']?: keyof ModeleAvecId
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
interface EstUniqueOptionsBilingue<T extends ModeleAvecId> {
|
|
168
|
-
champs: ValeursChampEstUniqueOptions<T>
|
|
169
|
-
valeurs: T[]
|
|
170
|
-
langueCss?: ChoixLangue
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
interface EstUniqueOptions<T extends ModeleAvecId> {
|
|
174
|
-
champ: keyof T
|
|
175
|
-
valeurs: T[]
|
|
176
|
-
}
|
|
177
|
-
export default {
|
|
178
|
-
estRequis,
|
|
179
|
-
estMinimumLongueur,
|
|
180
|
-
estMaximumLongueur,
|
|
181
|
-
estUnique,
|
|
182
|
-
estUniqueBilingue,
|
|
183
|
-
}
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { ChoixLangue } from '@/enums/choixLangue'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Valide que le champ contient une valeur définie et non vide.
|
|
6
|
+
* Accepte les chaînes de caractères non vides, les nombres différents de 0,
|
|
7
|
+
* et toute autre valeur définie (ex. objets sélectionnés dans un v-select).
|
|
8
|
+
*
|
|
9
|
+
* @param valeur La valeur saisie ou sélectionnée dans le champ.
|
|
10
|
+
* @returns true si la valeur est considérée comme valide, sinon retourne un message d'erreur.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export function estRequis(valeur: unknown, t: (key: string, params?: any) => string): true | string {
|
|
14
|
+
if (valeur == null) return t('csqc.validateurs.estRequis')
|
|
15
|
+
|
|
16
|
+
if (typeof valeur === 'number' && isNaN(valeur)) return t('csqc.validateurs.estRequis')
|
|
17
|
+
|
|
18
|
+
if (typeof valeur === 'string') {
|
|
19
|
+
return valeur.trim().length > 0 || t('csqc.validateurs.estRequis')
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return true // On considère tout le reste comme valide (ex: number, object, etc.)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Valide que le champ contient une valeur qui est d'une longeur minimale.
|
|
27
|
+
* @param valeur La valeur saisie du champ texte.
|
|
28
|
+
* @param min La longeur minimale de la valeur.
|
|
29
|
+
* @returns true si la longeur de la valeur est égale ou supérieure au minimum, sinon retourne un message d'erreur.
|
|
30
|
+
*/
|
|
31
|
+
export function estMinimumLongueur(valeur: string, min: number, t: (key: string, params?: any) => string) {
|
|
32
|
+
if (min <= 0) {
|
|
33
|
+
min = 1
|
|
34
|
+
console.warn(
|
|
35
|
+
'CsqcValidateurs (estMinimumLongeur) - Une valeur négative ou égale à 0 a été reçue. Assurez-vous de passer une valeur supérieur à 0 dans la fonction estMinimumLongeur. La valeur a été mise à 1.',
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
return (valeur && valeur.trim().length >= min) || t('csqc.validateurs.estMinimumLongueur', { nbCaracteres: min })
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Valide que le champ contient une valeur qui ne dépasse pas une longeur maximale.
|
|
43
|
+
* @param valeur La valeur saisie du champ texte.
|
|
44
|
+
* @param max La longeur maximale (inclusive) de la valeur.
|
|
45
|
+
* @returns true si la longeur de la valeur est inférieure ou égale au maximum, sinon retourne un message d'erreur.
|
|
46
|
+
*/
|
|
47
|
+
export function estMaximumLongueur(valeur: string, max: number, t: (key: string, params?: any) => string) {
|
|
48
|
+
if (max < 1) {
|
|
49
|
+
max = 1
|
|
50
|
+
console.warn(
|
|
51
|
+
'CsqcValidateurs (estMaximumLongueur) - Une valeur négative ou égale à 0 a été reçue. Assurez-vous de passer une valeur supérieur à 0 dans la fonction estMaximumLongueur. La valeur a été mise à 1.',
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return (valeur && valeur.trim().length <= max) || t('csqc.validateurs.estMaximumLongueur', { nbCaracteres: max })
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Vérifie qu'une valeur passée en paramètre est unique parmis une liste de valeurs. La validation du bilinguisme sera appliquée
|
|
60
|
+
* selon la langue CSS configurée et passée en option.
|
|
61
|
+
* @param valeur La valeur a vérifier
|
|
62
|
+
* @param modele L'instance d'un modèle avec un primary key id
|
|
63
|
+
* @param options Les configurations de la fonction
|
|
64
|
+
* @returns Vrai si la valeur est unique, ou une string d'erreur si un doublon est trouvé.
|
|
65
|
+
*/
|
|
66
|
+
export function estUniqueBilingue<T extends ModeleAvecId>(
|
|
67
|
+
valeur: string,
|
|
68
|
+
modele: T,
|
|
69
|
+
options: EstUniqueOptionsBilingue<T>,
|
|
70
|
+
t: (key: string, params?: any) => string,
|
|
71
|
+
) {
|
|
72
|
+
// Affectations valeurs par défaut
|
|
73
|
+
const { champs, langueCss, valeurs } = options
|
|
74
|
+
if (!langueCss) options.langueCss = ChoixLangue.Francais
|
|
75
|
+
valeur = valeur.toLowerCase().trim()
|
|
76
|
+
|
|
77
|
+
switch (langueCss) {
|
|
78
|
+
case ChoixLangue.Anglais:
|
|
79
|
+
if (!champs.Anglais) {
|
|
80
|
+
console.error(
|
|
81
|
+
'CsqcValidateurs (estUnique) - Le champ anglais doit être speçifié lorsque la langueCss est en anglais.',
|
|
82
|
+
)
|
|
83
|
+
throw Error(
|
|
84
|
+
'CsqcValidateurs (estUnique) - Le champ anglais doit être speçifié lorsque la langueCss est en anglais.',
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
return (
|
|
88
|
+
!valeurs.find(
|
|
89
|
+
e =>
|
|
90
|
+
(e[champs.Anglais!] as string) != null &&
|
|
91
|
+
(e[champs.Anglais!] as string).toLowerCase().trim() === valeur &&
|
|
92
|
+
e.id !== modele.id,
|
|
93
|
+
) || t('csqc.validateurs.estUnique', { valeurExistante: valeur })
|
|
94
|
+
)
|
|
95
|
+
case ChoixLangue.Francais:
|
|
96
|
+
if (!champs.Francais) {
|
|
97
|
+
console.error(
|
|
98
|
+
'CsqcValidateurs (estUnique) - Le champ français doit être speçifié lorsque la langueCss est en français.',
|
|
99
|
+
)
|
|
100
|
+
throw Error(
|
|
101
|
+
'CsqcValidateurs (estUnique) - Le champ français doit être speçifié lorsque la langueCss est en français.',
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
return (
|
|
105
|
+
valeurs.find(
|
|
106
|
+
e =>
|
|
107
|
+
(e[champs.Francais!] as string) != null &&
|
|
108
|
+
(e[champs.Francais!] as string).toLowerCase().trim() === valeur &&
|
|
109
|
+
e.id !== modele.id,
|
|
110
|
+
) == null || t('csqc.validateurs.estUnique', { valeurExistante: valeur })
|
|
111
|
+
)
|
|
112
|
+
case ChoixLangue.Bilingue:
|
|
113
|
+
if (!champs.Anglais || !champs.Francais) {
|
|
114
|
+
console.error(
|
|
115
|
+
"CsqcValidateurs (estUnique) - Les deux champs (français et anglais) doivent être speçifiés lorsque qu'on est en mode de validation bilingue.",
|
|
116
|
+
)
|
|
117
|
+
throw Error(
|
|
118
|
+
"CsqcValidateurs (estUnique) - Les deux champs (français et anglais) doivent être speçifiés lorsque qu'on est en mode de validation bilingue.",
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
const estUnique =
|
|
122
|
+
valeurs.find(
|
|
123
|
+
e =>
|
|
124
|
+
((e[champs.Francais!] != null && (e[champs.Francais!] as string).toLowerCase().trim() === valeur) ||
|
|
125
|
+
(e[champs.Anglais!] != null && (e[champs.Anglais!] as string).toLowerCase().trim() === valeur)) &&
|
|
126
|
+
e.id !== modele.id,
|
|
127
|
+
) == null
|
|
128
|
+
return estUnique || t('csqc.validateurs.estUnique', { valeurExistante: valeur })
|
|
129
|
+
default:
|
|
130
|
+
break
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
throw Error('pas supposé être ici')
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Vérifie qu'une valeur passée en paramètre est unique parmis une liste de valeurs.
|
|
138
|
+
* @param valeur La valeur a vérifier
|
|
139
|
+
* @param modele L'instance d'un modèle avec un primary key id
|
|
140
|
+
* @param options Les configurations de la fonction
|
|
141
|
+
* @returns Vrai si la valeur est unique, ou une string d'erreur si un doublon est trouvé.
|
|
142
|
+
*/
|
|
143
|
+
export function estUnique<T extends ModeleAvecId>(
|
|
144
|
+
valeur: string,
|
|
145
|
+
modele: T,
|
|
146
|
+
options: EstUniqueOptions<T>,
|
|
147
|
+
t: (key: string, params?: any) => string,
|
|
148
|
+
) {
|
|
149
|
+
const { champ, valeurs } = options
|
|
150
|
+
return (
|
|
151
|
+
!valeurs.some(
|
|
152
|
+
e =>
|
|
153
|
+
e[champ] != null &&
|
|
154
|
+
(e[champ] as string).toLowerCase().trim() === valeur.toLowerCase().trim() &&
|
|
155
|
+
e.id !== modele.id,
|
|
156
|
+
) || t('csqc.validateurs.estUnique', { valeurExistante: valeur })
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
type ModeleAvecId = { id: number }
|
|
161
|
+
|
|
162
|
+
type ValeursChampEstUniqueOptions<ModeleAvecId> = {
|
|
163
|
+
['Francais']?: keyof ModeleAvecId
|
|
164
|
+
['Anglais']?: keyof ModeleAvecId
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface EstUniqueOptionsBilingue<T extends ModeleAvecId> {
|
|
168
|
+
champs: ValeursChampEstUniqueOptions<T>
|
|
169
|
+
valeurs: T[]
|
|
170
|
+
langueCss?: ChoixLangue
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
interface EstUniqueOptions<T extends ModeleAvecId> {
|
|
174
|
+
champ: keyof T
|
|
175
|
+
valeurs: T[]
|
|
176
|
+
}
|
|
177
|
+
export default {
|
|
178
|
+
estRequis,
|
|
179
|
+
estMinimumLongueur,
|
|
180
|
+
estMaximumLongueur,
|
|
181
|
+
estUnique,
|
|
182
|
+
estUniqueBilingue,
|
|
183
|
+
}
|
package/locales/fr.json
CHANGED
|
@@ -61,6 +61,12 @@
|
|
|
61
61
|
"placeholder": {
|
|
62
62
|
"date": "Choisir une date",
|
|
63
63
|
"selectionner": "Sélectionner"
|
|
64
|
+
},
|
|
65
|
+
"validateurs": {
|
|
66
|
+
"estMaximumLongeur": "Aucun | Ce champ ne doit pas dépasser {nbCaracteres} caractère | Ce champ ne doit pas dépasser {nbCaracteres} caractères.",
|
|
67
|
+
"estMinimumLongueur": "Aucun | Ce champ est trop court, il doit contenir au moins {nbCaracteres} caractère | Ce champ est trop court, il doit contenir au moins {nbCaracteres} caractères",
|
|
68
|
+
"estRequis": "Ce champ est requis",
|
|
69
|
+
"estUnique": "La valeur '{valeurExistante}' existe déjà"
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
}
|