@movalib/movalib-commons 1.45.0 → 1.47.0
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/devIndex.tsx +7 -0
- package/dist/devIndex.js +3 -0
- package/dist/src/MovaVehicleTireField.d.ts +1 -1
- package/dist/src/MovaVehicleTireField.js +17 -26
- package/dist/src/helpers/Enums.d.ts +2 -1
- package/dist/src/helpers/Enums.js +1 -0
- package/package.json +1 -1
- package/src/MovaVehicleTireField.tsx +21 -31
- package/src/helpers/Enums.ts +5 -4
package/devIndex.tsx
CHANGED
|
@@ -26,6 +26,8 @@ import GaragePLV from './src/GaragePLV';
|
|
|
26
26
|
import AddressFields from './src/AddressFields';
|
|
27
27
|
import IbanInput from './src/IbanInput';
|
|
28
28
|
import GenderSelector from './src/GenderSelector';
|
|
29
|
+
import {VehicleTire} from "./index";
|
|
30
|
+
import MovaVehicleTireField from "./src/MovaVehicleTireField";
|
|
29
31
|
|
|
30
32
|
const App = () => {
|
|
31
33
|
|
|
@@ -123,6 +125,11 @@ const App = () => {
|
|
|
123
125
|
alert('plaque valide');
|
|
124
126
|
} } />
|
|
125
127
|
</Container>
|
|
128
|
+
<Container style={flexCenter} sx={{ width: '400px', mt: 2}}>
|
|
129
|
+
<MovaVehicleTireField onChangeVehicleTire={(vehicleTire) => {
|
|
130
|
+
console.log(vehicleTire);
|
|
131
|
+
}}/>
|
|
132
|
+
</Container>
|
|
126
133
|
|
|
127
134
|
|
|
128
135
|
<MovaLogin
|
package/dist/devIndex.js
CHANGED
|
@@ -63,6 +63,7 @@ var GaragePLV_1 = __importDefault(require("./src/GaragePLV"));
|
|
|
63
63
|
var AddressFields_1 = __importDefault(require("./src/AddressFields"));
|
|
64
64
|
var IbanInput_1 = __importDefault(require("./src/IbanInput"));
|
|
65
65
|
var GenderSelector_1 = __importDefault(require("./src/GenderSelector"));
|
|
66
|
+
var MovaVehicleTireField_1 = __importDefault(require("./src/MovaVehicleTireField"));
|
|
66
67
|
var App = function () {
|
|
67
68
|
Logger_1.default.enableLogging();
|
|
68
69
|
// Chargement de données garage de test
|
|
@@ -130,6 +131,8 @@ var App = function () {
|
|
|
130
131
|
gender: undefined
|
|
131
132
|
} }), (0, jsx_runtime_1.jsx)(material_1.Container, __assign({ style: Tools_1.flexCenter, sx: { width: '400px', mt: 2 } }, { children: (0, jsx_runtime_1.jsx)(VehiclePlateField_1.default, { onValidVehiclePlate: function (vehiclePlate) {
|
|
132
133
|
alert('plaque valide');
|
|
134
|
+
} }) })), (0, jsx_runtime_1.jsx)(material_1.Container, __assign({ style: Tools_1.flexCenter, sx: { width: '400px', mt: 2 } }, { children: (0, jsx_runtime_1.jsx)(MovaVehicleTireField_1.default, { onChangeVehicleTire: function (vehicleTire) {
|
|
135
|
+
console.log(vehicleTire);
|
|
133
136
|
} }) })), (0, jsx_runtime_1.jsx)(MovaLogin_1.default, { darkMode: false, movaAppType: Enums_1.MovaAppType.INDIVIDUAL, version: "0.1.3", onSubmit: function (form) {
|
|
134
137
|
alert('Form Submitted !');
|
|
135
138
|
}, onSubmitForgotPassword: function (email) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type FC } from 'react';
|
|
2
2
|
import VehicleTire from './models/VehicleTire';
|
|
3
3
|
interface MovaVehicleTireFieldProps {
|
|
4
|
-
vehicleTire
|
|
4
|
+
vehicleTire?: VehicleTire;
|
|
5
5
|
onChangeVehicleTire: (vehicleTire: VehicleTire, isValid: boolean) => void;
|
|
6
6
|
}
|
|
7
7
|
declare const MovaVehicleTireField: FC<MovaVehicleTireFieldProps>;
|
|
@@ -12,59 +12,50 @@ var Tools_1 = require("./helpers/Tools");
|
|
|
12
12
|
var regex = /^\d{9}[A-Za-z]$/;
|
|
13
13
|
var MovaVehicleTireField = function (_a) {
|
|
14
14
|
var vehicleTire = _a.vehicleTire, onChangeVehicleTire = _a.onChangeVehicleTire;
|
|
15
|
-
var _b = (0, react_1.useState)(''),
|
|
16
|
-
var _c = (0, react_1.useState)(
|
|
17
|
-
var _d = (0, react_1.useState)(
|
|
18
|
-
var _e = (0, react_1.useState)(0), lastLength = _e[0], setLastLength = _e[1]; // Ajout d'un état pour stocker la longueur précédente
|
|
15
|
+
var _b = (0, react_1.useState)(''), tireInfo = _b[0], setTireInfo = _b[1];
|
|
16
|
+
var _c = (0, react_1.useState)(false), error = _c[0], setError = _c[1];
|
|
17
|
+
var _d = (0, react_1.useState)(0), lastLength = _d[0], setLastLength = _d[1]; // Ajout d'un état pour stocker la longueur précédente
|
|
19
18
|
(0, react_1.useEffect)(function () {
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
if (vehicleTire) {
|
|
20
|
+
setTireInfo((0, Tools_1.formatVehicleTire)(vehicleTire));
|
|
21
|
+
}
|
|
22
22
|
}, [vehicleTire]);
|
|
23
|
-
|
|
23
|
+
var handleChange = function (e) {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
var rawValue = e.target.value;
|
|
24
26
|
// Cette expression régulière supprimera tous les caractères qui ne sont pas des chiffres ou des lettres alphabétiques, à l'exception de "R" et "r".
|
|
25
27
|
// On ne peut saisir que 10 caractères maximum (ex : 245551791V)
|
|
26
28
|
var value = rawValue.toUpperCase().replace(/[^0-9A-QS-Za-qs-z]/g, '').slice(0, 10);
|
|
27
|
-
console.log(value);
|
|
28
29
|
// On valide la saisie (le champ n'est pas obligatoire)
|
|
29
30
|
var isValid = value.length == 0 || (value.length > 0 && regex.test(value));
|
|
30
31
|
setError(!regex.test(value));
|
|
31
|
-
console.log(isValid);
|
|
32
32
|
// Vérifier si l'utilisateur est en train de supprimer un caractère
|
|
33
33
|
var isDeleting = value.length < lastLength;
|
|
34
|
-
console.log("Deleting : ".concat(isDeleting));
|
|
35
34
|
// Ajout du " / "
|
|
36
35
|
if (value.length >= 3 && !(rawValue.length == 5 && isDeleting)) {
|
|
37
|
-
console.log('Ajout : /');
|
|
38
36
|
value = "".concat(value.substring(0, 3), " / ").concat(value.substring(3));
|
|
39
37
|
}
|
|
40
38
|
// Ajout du " R"
|
|
41
39
|
if (value.length >= 8 && !(rawValue.length == 9 && isDeleting)) {
|
|
42
|
-
console.log('Ajout : R');
|
|
43
40
|
value = "".concat(value.substring(0, 8), " R").concat(value.substring(8));
|
|
44
41
|
}
|
|
45
42
|
// Ajout d'un espace après la saisie du diamètre des pneus
|
|
46
43
|
if (value.length >= 12 && !(rawValue.length <= 12 && isDeleting)) {
|
|
47
|
-
console.log('Ajout : " "');
|
|
48
44
|
value = "".concat(value.substring(0, 12), " ").concat(value.substring(12));
|
|
49
45
|
}
|
|
50
46
|
setTireInfo(value);
|
|
51
|
-
|
|
52
|
-
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting)) {
|
|
53
|
-
var parts =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var vehicleTire_1 = new VehicleTire_1.default(width, height, diameter, speedIndex);
|
|
57
|
-
onChangeVehicleTire(vehicleTire_1, isValid);
|
|
58
|
-
}
|
|
47
|
+
var parts = value.split(" ");
|
|
48
|
+
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting) && parts.length === 5) {
|
|
49
|
+
var width = parts[0], _separator = parts[1], height = parts[2], diameter = parts[3], speedIndex = parts[4];
|
|
50
|
+
var vehicleTire_1 = new VehicleTire_1.default(width, height, diameter, speedIndex);
|
|
51
|
+
onChangeVehicleTire(vehicleTire_1, isValid);
|
|
59
52
|
}
|
|
60
53
|
else {
|
|
61
|
-
|
|
54
|
+
var width = parts[0], _separator = parts[1], height = parts[2], diameter = parts[3], speedIndex = parts[4];
|
|
55
|
+
var vehicleTire_2 = new VehicleTire_1.default(width !== null && width !== void 0 ? width : '', height !== null && height !== void 0 ? height : '', diameter !== null && diameter !== void 0 ? diameter : '', speedIndex !== null && speedIndex !== void 0 ? speedIndex : '');
|
|
56
|
+
onChangeVehicleTire(vehicleTire_2, isValid);
|
|
62
57
|
}
|
|
63
58
|
setLastLength(value.length); // Mettre à jour la longueur précédente
|
|
64
|
-
}, [rawValue]);
|
|
65
|
-
var handleChange = function (e) {
|
|
66
|
-
e.preventDefault();
|
|
67
|
-
setRawValue(e.target.value);
|
|
68
59
|
};
|
|
69
60
|
return ((0, jsx_runtime_1.jsx)(material_1.TextField, { label: "Taille des pneumatiques", variant: "outlined", value: tireInfo, onChange: handleChange, fullWidth: true, placeholder: 'XXX XX RXX XXX', sx: {
|
|
70
61
|
width: '100%',
|
|
@@ -182,7 +182,8 @@ export declare enum EventState {
|
|
|
182
182
|
}
|
|
183
183
|
export declare enum EventType {
|
|
184
184
|
APPOINTMENT = "APPOINTMENT",
|
|
185
|
-
UNAVAILABILITY = "UNAVAILABILITY"
|
|
185
|
+
UNAVAILABILITY = "UNAVAILABILITY",
|
|
186
|
+
NOTE = "NOTE"
|
|
186
187
|
}
|
|
187
188
|
export declare enum DayOfWeek {
|
|
188
189
|
MONDAY = "MONDAY",
|
|
@@ -205,6 +205,7 @@ var EventType;
|
|
|
205
205
|
(function (EventType) {
|
|
206
206
|
EventType["APPOINTMENT"] = "APPOINTMENT";
|
|
207
207
|
EventType["UNAVAILABILITY"] = "UNAVAILABILITY";
|
|
208
|
+
EventType["NOTE"] = "NOTE";
|
|
208
209
|
})(EventType = exports.EventType || (exports.EventType = {}));
|
|
209
210
|
var DayOfWeek;
|
|
210
211
|
(function (DayOfWeek) {
|
package/package.json
CHANGED
|
@@ -4,87 +4,77 @@ import VehicleTire from './models/VehicleTire';
|
|
|
4
4
|
import { formatVehicleTire } from './helpers/Tools';
|
|
5
5
|
|
|
6
6
|
interface MovaVehicleTireFieldProps {
|
|
7
|
-
vehicleTire
|
|
7
|
+
vehicleTire?: VehicleTire,
|
|
8
8
|
onChangeVehicleTire: (vehicleTire: VehicleTire, isValid: boolean) => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
// Regex pour une taille de pneumatique Française
|
|
12
|
-
const regex = /^\d{9}[A-Za-z]$/;
|
|
12
|
+
const regex = /^\d{9}[A-Za-z]$/;
|
|
13
13
|
|
|
14
14
|
const MovaVehicleTireField: FC<MovaVehicleTireFieldProps> = ({ vehicleTire, onChangeVehicleTire }) => {
|
|
15
15
|
|
|
16
|
-
const [rawValue, setRawValue] = useState('');
|
|
17
16
|
const [tireInfo, setTireInfo] = useState('');
|
|
18
17
|
const [error, setError] = useState<boolean>(false);
|
|
19
18
|
const [lastLength, setLastLength] = useState<number>(0); // Ajout d'un état pour stocker la longueur précédente
|
|
20
19
|
|
|
21
20
|
useEffect(() => {
|
|
22
|
-
|
|
21
|
+
if(vehicleTire) {
|
|
23
22
|
setTireInfo(formatVehicleTire(vehicleTire));
|
|
23
|
+
}
|
|
24
24
|
}, [vehicleTire]);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
|
|
27
|
+
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
const rawValue = e.target.value;
|
|
27
30
|
|
|
28
31
|
// Cette expression régulière supprimera tous les caractères qui ne sont pas des chiffres ou des lettres alphabétiques, à l'exception de "R" et "r".
|
|
29
32
|
// On ne peut saisir que 10 caractères maximum (ex : 245551791V)
|
|
30
33
|
let value = rawValue.toUpperCase().replace(/[^0-9A-QS-Za-qs-z]/g, '').slice(0, 10);
|
|
31
34
|
|
|
32
|
-
console.log(value);
|
|
33
35
|
|
|
34
36
|
// On valide la saisie (le champ n'est pas obligatoire)
|
|
35
37
|
let isValid = value.length == 0 || (value.length > 0 && regex.test(value));
|
|
36
38
|
setError(!regex.test(value));
|
|
37
39
|
|
|
38
|
-
console.log(isValid);
|
|
39
|
-
|
|
40
40
|
// Vérifier si l'utilisateur est en train de supprimer un caractère
|
|
41
41
|
const isDeleting = value.length < lastLength;
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
|
|
44
43
|
// Ajout du " / "
|
|
45
44
|
if (value.length >= 3 && !(rawValue.length == 5 && isDeleting)) {
|
|
46
|
-
console.log('Ajout : /')
|
|
47
45
|
value = `${value.substring(0, 3)} / ${value.substring(3)}`;
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
// Ajout du " R"
|
|
51
49
|
if (value.length >= 8 && !(rawValue.length == 9 && isDeleting)) {
|
|
52
|
-
console.log('Ajout : R')
|
|
53
50
|
value = `${value.substring(0, 8)} R${value.substring(8)}`;
|
|
54
51
|
}
|
|
55
52
|
|
|
56
53
|
|
|
57
54
|
// Ajout d'un espace après la saisie du diamètre des pneus
|
|
58
55
|
if (value.length >= 12 && !(rawValue.length <= 12 && isDeleting)) {
|
|
59
|
-
console.log('Ajout : " "')
|
|
60
56
|
value = `${value.substring(0, 12)} ${value.substring(12)}`;
|
|
61
57
|
}
|
|
62
58
|
|
|
63
59
|
setTireInfo(value);
|
|
64
|
-
console.log(value.length);
|
|
65
|
-
|
|
66
|
-
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting)) {
|
|
67
60
|
|
|
68
|
-
|
|
61
|
+
const parts = value.split(" ");
|
|
69
62
|
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting) && parts.length === 5) {
|
|
64
|
+
const [width, _separator, height, diameter, speedIndex] = parts;
|
|
72
65
|
const vehicleTire = new VehicleTire(width, height, diameter, speedIndex);
|
|
73
66
|
onChangeVehicleTire(vehicleTire, isValid);
|
|
74
|
-
}
|
|
75
67
|
} else {
|
|
68
|
+
const [width, _separator, height, diameter, speedIndex] = parts;
|
|
69
|
+
const vehicleTire = new VehicleTire(width ?? '', height ?? '', diameter ?? '', speedIndex ?? '');
|
|
70
|
+
|
|
76
71
|
onChangeVehicleTire(vehicleTire, isValid);
|
|
77
72
|
}
|
|
78
73
|
|
|
79
74
|
setLastLength(value.length); // Mettre à jour la longueur précédente
|
|
80
75
|
|
|
81
|
-
}
|
|
76
|
+
};
|
|
82
77
|
|
|
83
|
-
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
84
|
-
e.preventDefault();
|
|
85
|
-
setRawValue(e.target.value);
|
|
86
|
-
};
|
|
87
|
-
|
|
88
78
|
return (
|
|
89
79
|
<TextField
|
|
90
80
|
label="Taille des pneumatiques"
|
|
@@ -93,14 +83,14 @@ const MovaVehicleTireField: FC<MovaVehicleTireFieldProps> = ({ vehicleTire, onCh
|
|
|
93
83
|
onChange={handleChange}
|
|
94
84
|
fullWidth
|
|
95
85
|
placeholder='XXX XX RXX XXX'
|
|
96
|
-
sx={{
|
|
97
|
-
width: '100%',
|
|
86
|
+
sx={{
|
|
87
|
+
width: '100%',
|
|
98
88
|
'& input': { textTransform: 'uppercase' } // CSS pour forcer les majuscules dans l'input
|
|
99
89
|
}}
|
|
100
|
-
error={error && tireInfo.length > 0}
|
|
101
|
-
helperText={error && tireInfo.length > 0 ? "Saisie invalide" : ''}
|
|
90
|
+
error={error && tireInfo.length > 0}
|
|
91
|
+
helperText={error && tireInfo.length > 0 ? "Saisie invalide" : ''}
|
|
102
92
|
/>
|
|
103
93
|
);
|
|
104
94
|
}
|
|
105
95
|
|
|
106
|
-
export default MovaVehicleTireField;
|
|
96
|
+
export default MovaVehicleTireField;
|
package/src/helpers/Enums.ts
CHANGED
|
@@ -180,7 +180,7 @@ export enum EventState {
|
|
|
180
180
|
* Refusé (rendez-vous refusé par le client)
|
|
181
181
|
* Cela concerne le refus de l'éventuel devis transmis par le garagiste pour le moment
|
|
182
182
|
*/
|
|
183
|
-
REJECTED = "REJECTED",
|
|
183
|
+
REJECTED = "REJECTED",
|
|
184
184
|
/**
|
|
185
185
|
* Planifé (rendez-vous planifié, devis accepté par le client le cas échéant)
|
|
186
186
|
* Note : si l'acceptation du devis n'est pas obligatoire pour le centre,
|
|
@@ -194,7 +194,7 @@ export enum EventState {
|
|
|
194
194
|
/**
|
|
195
195
|
* Le rendez-vous est clôturé
|
|
196
196
|
*/
|
|
197
|
-
DONE = "DONE",
|
|
197
|
+
DONE = "DONE",
|
|
198
198
|
/**
|
|
199
199
|
* Le rendez-vous a été annulé (par le centre ou le client)
|
|
200
200
|
*/
|
|
@@ -203,7 +203,8 @@ export enum EventState {
|
|
|
203
203
|
|
|
204
204
|
export enum EventType {
|
|
205
205
|
APPOINTMENT = "APPOINTMENT",
|
|
206
|
-
UNAVAILABILITY = "UNAVAILABILITY"
|
|
206
|
+
UNAVAILABILITY = "UNAVAILABILITY",
|
|
207
|
+
NOTE = "NOTE",
|
|
207
208
|
}
|
|
208
209
|
|
|
209
210
|
export enum DayOfWeek {
|
|
@@ -270,4 +271,4 @@ export enum RoleType {
|
|
|
270
271
|
* Super-Administrateur (team Movalib)
|
|
271
272
|
*/
|
|
272
273
|
SUPER_ADMIN = "ROLE_SUPER_ADMIN",
|
|
273
|
-
}
|
|
274
|
+
}
|