@movalib/movalib-commons 1.0.39 → 1.0.41
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/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/src/MovaVehicleTireField.d.ts +8 -0
- package/dist/src/MovaVehicleTireField.js +72 -0
- package/dist/src/models/VehicleTire.d.ts +5 -5
- package/dist/src/models/VehicleTire.js +5 -5
- package/index.ts +3 -0
- package/package.json +1 -1
- package/src/MovaVehicleTireField.tsx +104 -0
- package/src/models/VehicleTire.ts +12 -13
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { default as MovaSnackbar } from './src/MovaSnackbar';
|
|
|
4
4
|
export { default as MovaLogin } from './src/MovaLogin';
|
|
5
5
|
export { default as MovaSignUp } from './src/MovaSignUp';
|
|
6
6
|
export { default as MovaCopyright } from './src/MovaCopyright';
|
|
7
|
+
export { default as MovaVehicleTireField } from './src/MovaVehicleTireField';
|
|
7
8
|
export { default as User } from './src/models/User';
|
|
8
9
|
export { default as Role } from './src/models/Role';
|
|
9
10
|
export { default as Address } from './src/models/Address';
|
|
@@ -12,6 +13,7 @@ export { default as Document } from './src/models/Document';
|
|
|
12
13
|
export { default as Garage } from './src/models/Garage';
|
|
13
14
|
export { default as Schedule } from './src/models/Schedule';
|
|
14
15
|
export { default as Event } from './src/models/Event';
|
|
16
|
+
export { default as VehicleTire } from './src/models/VehicleTire';
|
|
15
17
|
export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval } from './src/helpers/Types';
|
|
16
18
|
export { validateField } from './src/helpers/Tools';
|
|
17
19
|
export { RoleType, MovaAppType, DayOfWeek, EventState, EventType, DocumentType, DigitalPassportIndex, DocumentState } from './src/helpers/Enums';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.validateField = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = void 0;
|
|
7
|
+
exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.validateField = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = void 0;
|
|
8
8
|
// Export des composants
|
|
9
9
|
var VehiclePlateField_1 = require("./src/VehiclePlateField");
|
|
10
10
|
Object.defineProperty(exports, "VehiclePlateField", { enumerable: true, get: function () { return __importDefault(VehiclePlateField_1).default; } });
|
|
@@ -18,6 +18,8 @@ var MovaSignUp_1 = require("./src/MovaSignUp");
|
|
|
18
18
|
Object.defineProperty(exports, "MovaSignUp", { enumerable: true, get: function () { return __importDefault(MovaSignUp_1).default; } });
|
|
19
19
|
var MovaCopyright_1 = require("./src/MovaCopyright");
|
|
20
20
|
Object.defineProperty(exports, "MovaCopyright", { enumerable: true, get: function () { return __importDefault(MovaCopyright_1).default; } });
|
|
21
|
+
var MovaVehicleTireField_1 = require("./src/MovaVehicleTireField");
|
|
22
|
+
Object.defineProperty(exports, "MovaVehicleTireField", { enumerable: true, get: function () { return __importDefault(MovaVehicleTireField_1).default; } });
|
|
21
23
|
// Export des classes
|
|
22
24
|
var User_1 = require("./src/models/User");
|
|
23
25
|
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return __importDefault(User_1).default; } });
|
|
@@ -35,6 +37,8 @@ var Schedule_1 = require("./src/models/Schedule");
|
|
|
35
37
|
Object.defineProperty(exports, "Schedule", { enumerable: true, get: function () { return __importDefault(Schedule_1).default; } });
|
|
36
38
|
var Event_1 = require("./src/models/Event");
|
|
37
39
|
Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return __importDefault(Event_1).default; } });
|
|
40
|
+
var VehicleTire_1 = require("./src/models/VehicleTire");
|
|
41
|
+
Object.defineProperty(exports, "VehicleTire", { enumerable: true, get: function () { return __importDefault(VehicleTire_1).default; } });
|
|
38
42
|
// Export des méthodes utilitaires
|
|
39
43
|
var Tools_1 = require("./src/helpers/Tools");
|
|
40
44
|
Object.defineProperty(exports, "validateField", { enumerable: true, get: function () { return Tools_1.validateField; } });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import VehicleTire from './models/VehicleTire';
|
|
3
|
+
interface MovaVehicleTireFieldProps {
|
|
4
|
+
vehicleTire: VehicleTire;
|
|
5
|
+
onChangeVehicleTire: (vehicleTire: VehicleTire, isValid: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const MovaVehicleTireField: FC<MovaVehicleTireFieldProps>;
|
|
8
|
+
export default MovaVehicleTireField;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
var material_1 = require("@mui/material");
|
|
8
|
+
var react_1 = require("react");
|
|
9
|
+
var VehicleTire_1 = __importDefault(require("./models/VehicleTire"));
|
|
10
|
+
// Regex pour une taille de pneumatique Française
|
|
11
|
+
var regex = /^\d{9}[A-Za-z]$/;
|
|
12
|
+
var MovaVehicleTireField = function (_a) {
|
|
13
|
+
var vehicleTire = _a.vehicleTire, onChangeVehicleTire = _a.onChangeVehicleTire;
|
|
14
|
+
var _b = (0, react_1.useState)(''), rawValue = _b[0], setRawValue = _b[1];
|
|
15
|
+
var _c = (0, react_1.useState)(''), tireInfo = _c[0], setTireInfo = _c[1];
|
|
16
|
+
var _d = (0, react_1.useState)(false), error = _d[0], setError = _d[1];
|
|
17
|
+
var _e = (0, react_1.useState)(0), lastLength = _e[0], setLastLength = _e[1]; // Ajout d'un état pour stocker la longueur précédente
|
|
18
|
+
(0, react_1.useEffect)(function () {
|
|
19
|
+
//setTireInfo(formatVehicleTire(vehicleTire));
|
|
20
|
+
}, [vehicleTire]);
|
|
21
|
+
(0, react_1.useEffect)(function () {
|
|
22
|
+
// 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".
|
|
23
|
+
// On ne peut saisir que 10 caractères maximum (ex : 245551791V)
|
|
24
|
+
var value = rawValue.toUpperCase().replace(/[^0-9A-QS-Za-qs-z]/g, '').slice(0, 10);
|
|
25
|
+
console.log(value);
|
|
26
|
+
// On valide la saisie (le champ n'est pas obligatoire)
|
|
27
|
+
var isValid = value.length == 0 || (value.length > 0 && regex.test(value));
|
|
28
|
+
setError(!regex.test(value));
|
|
29
|
+
console.log(isValid);
|
|
30
|
+
// Vérifier si l'utilisateur est en train de supprimer un caractère
|
|
31
|
+
var isDeleting = value.length < lastLength;
|
|
32
|
+
console.log("Deleting : ".concat(isDeleting));
|
|
33
|
+
// Ajout du " / "
|
|
34
|
+
if (value.length >= 3 && !(rawValue.length == 5 && isDeleting)) {
|
|
35
|
+
console.log('Ajout : /');
|
|
36
|
+
value = "".concat(value.substring(0, 3), " / ").concat(value.substring(3));
|
|
37
|
+
}
|
|
38
|
+
// Ajout du " R"
|
|
39
|
+
if (value.length >= 8 && !(rawValue.length == 9 && isDeleting)) {
|
|
40
|
+
console.log('Ajout : R');
|
|
41
|
+
value = "".concat(value.substring(0, 8), " R").concat(value.substring(8));
|
|
42
|
+
}
|
|
43
|
+
// Ajout d'un espace après la saisie du diamètre des pneus
|
|
44
|
+
if (value.length >= 12 && !(rawValue.length <= 12 && isDeleting)) {
|
|
45
|
+
console.log('Ajout : " "');
|
|
46
|
+
value = "".concat(value.substring(0, 12), " ").concat(value.substring(12));
|
|
47
|
+
}
|
|
48
|
+
setTireInfo(value);
|
|
49
|
+
console.log(value.length);
|
|
50
|
+
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting)) {
|
|
51
|
+
var parts = value.split(" ");
|
|
52
|
+
if (parts.length === 5) {
|
|
53
|
+
var width = parts[0], separator = parts[1], height = parts[2], diameter = parts[3], speedIndex = parts[4];
|
|
54
|
+
var vehicleTire_1 = new VehicleTire_1.default(width, height, diameter, speedIndex);
|
|
55
|
+
onChangeVehicleTire(vehicleTire_1, isValid);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
onChangeVehicleTire(vehicleTire, isValid);
|
|
60
|
+
}
|
|
61
|
+
setLastLength(value.length); // Mettre à jour la longueur précédente
|
|
62
|
+
}, [rawValue]);
|
|
63
|
+
var handleChange = function (e) {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
setRawValue(e.target.value);
|
|
66
|
+
};
|
|
67
|
+
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: {
|
|
68
|
+
width: '100%',
|
|
69
|
+
'& input': { textTransform: 'uppercase' } // CSS pour forcer les majuscules dans l'input
|
|
70
|
+
}, error: error && tireInfo.length > 0, helperText: error && tireInfo.length > 0 ? "Saisie invalide" : '' }));
|
|
71
|
+
};
|
|
72
|
+
exports.default = MovaVehicleTireField;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default class VehicleTire {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(
|
|
2
|
+
width: string;
|
|
3
|
+
height: string;
|
|
4
|
+
diameter: string;
|
|
5
|
+
speedIndex: string;
|
|
6
|
+
constructor(width: string, height: string, diameter: string, speedIndex: string);
|
|
7
7
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var VehicleTire = /** @class */ (function () {
|
|
4
|
-
function VehicleTire(
|
|
5
|
-
this.
|
|
6
|
-
this.
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
4
|
+
function VehicleTire(width, height, diameter, speedIndex) {
|
|
5
|
+
this.width = width;
|
|
6
|
+
this.height = height;
|
|
7
|
+
this.diameter = diameter;
|
|
8
|
+
this.speedIndex = speedIndex;
|
|
9
9
|
}
|
|
10
10
|
return VehicleTire;
|
|
11
11
|
}());
|
package/index.ts
CHANGED
|
@@ -7,6 +7,8 @@ export { default as MovaSnackbar } from './src/MovaSnackbar';
|
|
|
7
7
|
export { default as MovaLogin } from './src/MovaLogin';
|
|
8
8
|
export { default as MovaSignUp } from './src/MovaSignUp';
|
|
9
9
|
export { default as MovaCopyright } from './src/MovaCopyright';
|
|
10
|
+
export { default as MovaVehicleTireField } from './src/MovaVehicleTireField';
|
|
11
|
+
|
|
10
12
|
|
|
11
13
|
// Export des classes
|
|
12
14
|
export { default as User } from './src/models/User';
|
|
@@ -17,6 +19,7 @@ export { default as Document } from './src/models/Document';
|
|
|
17
19
|
export { default as Garage } from './src/models/Garage';
|
|
18
20
|
export { default as Schedule } from './src/models/Schedule';
|
|
19
21
|
export { default as Event } from './src/models/Event';
|
|
22
|
+
export { default as VehicleTire } from './src/models/VehicleTire';
|
|
20
23
|
|
|
21
24
|
// Export des types
|
|
22
25
|
export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval } from './src/helpers/Types';
|
package/package.json
CHANGED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { TextField } from '@mui/material';
|
|
2
|
+
import { useState, type FC, useEffect } from 'react';
|
|
3
|
+
import VehicleTire from './models/VehicleTire';
|
|
4
|
+
|
|
5
|
+
interface MovaVehicleTireFieldProps {
|
|
6
|
+
vehicleTire: VehicleTire,
|
|
7
|
+
onChangeVehicleTire: (vehicleTire: VehicleTire, isValid: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Regex pour une taille de pneumatique Française
|
|
11
|
+
const regex = /^\d{9}[A-Za-z]$/;
|
|
12
|
+
|
|
13
|
+
const MovaVehicleTireField: FC<MovaVehicleTireFieldProps> = ({ vehicleTire, onChangeVehicleTire }) => {
|
|
14
|
+
|
|
15
|
+
const [rawValue, setRawValue] = useState('');
|
|
16
|
+
const [tireInfo, setTireInfo] = useState('');
|
|
17
|
+
const [error, setError] = useState<boolean>(false);
|
|
18
|
+
const [lastLength, setLastLength] = useState<number>(0); // Ajout d'un état pour stocker la longueur précédente
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
//setTireInfo(formatVehicleTire(vehicleTire));
|
|
22
|
+
}, [vehicleTire ]);
|
|
23
|
+
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
|
|
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".
|
|
27
|
+
// On ne peut saisir que 10 caractères maximum (ex : 245551791V)
|
|
28
|
+
let value = rawValue.toUpperCase().replace(/[^0-9A-QS-Za-qs-z]/g, '').slice(0, 10);
|
|
29
|
+
|
|
30
|
+
console.log(value);
|
|
31
|
+
|
|
32
|
+
// On valide la saisie (le champ n'est pas obligatoire)
|
|
33
|
+
let isValid = value.length == 0 || (value.length > 0 && regex.test(value));
|
|
34
|
+
setError(!regex.test(value));
|
|
35
|
+
|
|
36
|
+
console.log(isValid);
|
|
37
|
+
|
|
38
|
+
// Vérifier si l'utilisateur est en train de supprimer un caractère
|
|
39
|
+
const isDeleting = value.length < lastLength;
|
|
40
|
+
console.log(`Deleting : ${isDeleting}`);
|
|
41
|
+
|
|
42
|
+
// Ajout du " / "
|
|
43
|
+
if (value.length >= 3 && !(rawValue.length == 5 && isDeleting)) {
|
|
44
|
+
console.log('Ajout : /')
|
|
45
|
+
value = `${value.substring(0, 3)} / ${value.substring(3)}`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Ajout du " R"
|
|
49
|
+
if (value.length >= 8 && !(rawValue.length == 9 && isDeleting)) {
|
|
50
|
+
console.log('Ajout : R')
|
|
51
|
+
value = `${value.substring(0, 8)} R${value.substring(8)}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// Ajout d'un espace après la saisie du diamètre des pneus
|
|
56
|
+
if (value.length >= 12 && !(rawValue.length <= 12 && isDeleting)) {
|
|
57
|
+
console.log('Ajout : " "')
|
|
58
|
+
value = `${value.substring(0, 12)} ${value.substring(12)}`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
setTireInfo(value);
|
|
62
|
+
console.log(value.length);
|
|
63
|
+
|
|
64
|
+
if (value.length >= 16 && !(rawValue.length == 17 && isDeleting)) {
|
|
65
|
+
|
|
66
|
+
const parts = value.split(" ");
|
|
67
|
+
|
|
68
|
+
if (parts.length === 5) {
|
|
69
|
+
let [width, separator, height, diameter, speedIndex] = parts;
|
|
70
|
+
const vehicleTire = new VehicleTire(width, height, diameter, speedIndex);
|
|
71
|
+
onChangeVehicleTire(vehicleTire, isValid);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
onChangeVehicleTire(vehicleTire, isValid);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
setLastLength(value.length); // Mettre à jour la longueur précédente
|
|
78
|
+
|
|
79
|
+
}, [rawValue]);
|
|
80
|
+
|
|
81
|
+
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
setRawValue(e.target.value);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<TextField
|
|
88
|
+
label="Taille des pneumatiques"
|
|
89
|
+
variant="outlined"
|
|
90
|
+
value={tireInfo}
|
|
91
|
+
onChange={handleChange}
|
|
92
|
+
fullWidth
|
|
93
|
+
placeholder='XXX XX RXX XXX'
|
|
94
|
+
sx={{
|
|
95
|
+
width: '100%',
|
|
96
|
+
'& input': { textTransform: 'uppercase' } // CSS pour forcer les majuscules dans l'input
|
|
97
|
+
}}
|
|
98
|
+
error={error && tireInfo.length > 0}
|
|
99
|
+
helperText={error && tireInfo.length > 0 ? "Saisie invalide" : ''}
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export default MovaVehicleTireField;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
export default class VehicleTire {
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
width: string;
|
|
4
|
+
height: string;
|
|
5
|
+
diameter: string;
|
|
6
|
+
speedIndex: string;
|
|
7
7
|
|
|
8
8
|
constructor(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
width: string,
|
|
10
|
+
height: string,
|
|
11
|
+
diameter: string,
|
|
12
|
+
speedIndex: string
|
|
13
13
|
) {
|
|
14
14
|
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
15
|
+
this.width = width;
|
|
16
|
+
this.height = height;
|
|
17
|
+
this.diameter = diameter;
|
|
18
|
+
this.speedIndex = speedIndex;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
20
|
|
|
22
21
|
}
|