@movalib/movalib-commons 1.1.46 → 1.1.48

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 CHANGED
@@ -39,7 +39,7 @@ export type { APIRequest, APIResponse } from './src/helpers/ApiHelper';
39
39
  export type { DaySchedule, DayInterval } from './src/ScheduleFields';
40
40
  export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval, MovaVehicleForm, AddressFieldName } from './src/helpers/Types';
41
41
  export { readCookie, deleteCookie } from './src/helpers/CookieUtils';
42
- export { validateField, formatVehicleTire, formatFrenchVehiclePlate, isEmpty, getApplicationShortLabel, capitalizeFirstLetter, flexLeftRow } from './src/helpers/Tools';
42
+ export { validateField, formatVehicleTire, formatFrenchVehiclePlate, isEmpty, getApplicationShortLabel, capitalizeFirstLetter, flexLeftRow, formatPhoneNumber, getFormattedSchedule, getFormattedIntervals, findScheduleByDayOfWeek } from './src/helpers/Tools';
43
43
  export { validatePhoneNumber, validateText, validateEmail } from './src/helpers/Validator';
44
44
  export { formatDateByCountryCode, getLongFormattedDateTime } from './src/helpers/DateUtils';
45
45
  export { RoleType, MovaAppType, DayOfWeek, EventState, EventType, DocumentType, DigitalPassportIndex, DocumentState, Gender, DateFormatTypes, PartsApplicationType, ProductType, OrderPreference, OrderState, SlotAlgorithm, VehiclePlateFormat as VehiclePlateType } from './src/helpers/Enums';
package/dist/index.js CHANGED
@@ -4,8 +4,8 @@ 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.formatDateByCountryCode = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = exports.flexLeftRow = exports.capitalizeFirstLetter = exports.getApplicationShortLabel = exports.isEmpty = exports.formatFrenchVehiclePlate = exports.formatVehicleTire = exports.validateField = exports.deleteCookie = exports.readCookie = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.Logger = exports.Operation = exports.Prestation = exports.Product = exports.Supplier = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = exports.MovaDigitalPassport = exports.VehicleFullCard = exports.ScheduleFields = exports.AddressFields = exports.AccountValidation = exports.GaragePLV = exports.IbanInput = exports.UserService = exports.GarageService = exports.AuthenticationService = void 0;
8
- exports.VehiclePlateType = exports.SlotAlgorithm = exports.OrderState = exports.OrderPreference = exports.ProductType = exports.PartsApplicationType = exports.DateFormatTypes = exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.getLongFormattedDateTime = void 0;
7
+ exports.findScheduleByDayOfWeek = exports.getFormattedIntervals = exports.getFormattedSchedule = exports.formatPhoneNumber = exports.flexLeftRow = exports.capitalizeFirstLetter = exports.getApplicationShortLabel = exports.isEmpty = exports.formatFrenchVehiclePlate = exports.formatVehicleTire = exports.validateField = exports.deleteCookie = exports.readCookie = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.Logger = exports.Operation = exports.Prestation = exports.Product = exports.Supplier = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = exports.MovaDigitalPassport = exports.VehicleFullCard = exports.ScheduleFields = exports.AddressFields = exports.AccountValidation = exports.GaragePLV = exports.IbanInput = exports.UserService = exports.GarageService = exports.AuthenticationService = void 0;
8
+ exports.VehiclePlateType = exports.SlotAlgorithm = exports.OrderState = exports.OrderPreference = exports.ProductType = exports.PartsApplicationType = exports.DateFormatTypes = exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.getLongFormattedDateTime = exports.formatDateByCountryCode = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = void 0;
9
9
  // Export des services
10
10
  var AuthenticationService_1 = require("./src/services/AuthenticationService");
11
11
  Object.defineProperty(exports, "AuthenticationService", { enumerable: true, get: function () { return __importDefault(AuthenticationService_1).default; } });
@@ -95,6 +95,10 @@ Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function () {
95
95
  Object.defineProperty(exports, "getApplicationShortLabel", { enumerable: true, get: function () { return Tools_1.getApplicationShortLabel; } });
96
96
  Object.defineProperty(exports, "capitalizeFirstLetter", { enumerable: true, get: function () { return Tools_1.capitalizeFirstLetter; } });
97
97
  Object.defineProperty(exports, "flexLeftRow", { enumerable: true, get: function () { return Tools_1.flexLeftRow; } });
98
+ Object.defineProperty(exports, "formatPhoneNumber", { enumerable: true, get: function () { return Tools_1.formatPhoneNumber; } });
99
+ Object.defineProperty(exports, "getFormattedSchedule", { enumerable: true, get: function () { return Tools_1.getFormattedSchedule; } });
100
+ Object.defineProperty(exports, "getFormattedIntervals", { enumerable: true, get: function () { return Tools_1.getFormattedIntervals; } });
101
+ Object.defineProperty(exports, "findScheduleByDayOfWeek", { enumerable: true, get: function () { return Tools_1.findScheduleByDayOfWeek; } });
98
102
  var Validator_1 = require("./src/helpers/Validator");
99
103
  Object.defineProperty(exports, "validatePhoneNumber", { enumerable: true, get: function () { return Validator_1.validatePhoneNumber; } });
100
104
  Object.defineProperty(exports, "validateText", { enumerable: true, get: function () { return Validator_1.validateText; } });
@@ -48,6 +48,7 @@ export declare enum APIMethod {
48
48
  DELETE = "DELETE"
49
49
  }
50
50
  export declare enum DateFormatTypes {
51
+ TIME_ONLY = "HH:mm",
51
52
  SHORT_FORMAT_DATE = "dd/MM/yyyy",
52
53
  LONG_FORMAT_DATETIME = "dd/MM/yyyy HH:mm:ss",
53
54
  LONG_FORMAT_DATETIME_LITERAL = "EEEE dd MMMM yyyy '\u00E0' HH:mm"
@@ -59,6 +59,7 @@ var APIMethod;
59
59
  })(APIMethod = exports.APIMethod || (exports.APIMethod = {}));
60
60
  var DateFormatTypes;
61
61
  (function (DateFormatTypes) {
62
+ DateFormatTypes["TIME_ONLY"] = "HH:mm";
62
63
  DateFormatTypes["SHORT_FORMAT_DATE"] = "dd/MM/yyyy";
63
64
  DateFormatTypes["LONG_FORMAT_DATETIME"] = "dd/MM/yyyy HH:mm:ss";
64
65
  DateFormatTypes["LONG_FORMAT_DATETIME_LITERAL"] = "EEEE dd MMMM yyyy '\u00E0' HH:mm";
@@ -1,7 +1,15 @@
1
1
  import VehicleTire from "../models/VehicleTire";
2
- import { MovaFormField } from "./Types";
2
+ import { MovaFormField, MovaInterval } from "./Types";
3
3
  import { CSSProperties } from "react";
4
- import { PartsApplicationType } from "./Enums";
4
+ import { DayOfWeek, PartsApplicationType } from "./Enums";
5
+ import Schedule from "../models/Schedule";
6
+ export declare const formatPhoneNumber: (phoneNumber: string) => string;
7
+ export declare const getFormattedSchedule: (schedule: Schedule | null, dayIndex: number) => string;
8
+ export declare const getFormattedIntervals: (intervals: MovaInterval[]) => string | undefined;
9
+ export declare const formatTime: (date: string | Date | null) => string | undefined;
10
+ export declare const findScheduleByDayOfWeek: (schedules: Schedule[], dayIndex: number) => Schedule | null;
11
+ export declare const getDayOfWeek: (index: number) => DayOfWeek | undefined;
12
+ export declare const getFrenchDayLabel: (day: DayOfWeek | undefined) => "Lundi" | "Mardi" | "Mercredi" | "Jeudi" | "Vendredi" | "Samedi" | "Dimanche" | undefined;
5
13
  export declare const flexLeftRow: CSSProperties;
6
14
  export declare const capitalizeFirstLetter: (str: string) => string;
7
15
  export declare const getApplicationShortLabel: (application: PartsApplicationType | undefined) => "" | "AV" | "AR" | "AV + AR" | "G" | "D" | "G + D";
@@ -1,7 +1,97 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = exports.formatFrenchVehiclePlate = exports.isEmpty = exports.flexCenter = exports.flexEnd = exports.getApplicationShortLabel = exports.capitalizeFirstLetter = exports.flexLeftRow = void 0;
3
+ exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = exports.formatFrenchVehiclePlate = exports.isEmpty = exports.flexCenter = exports.flexEnd = exports.getApplicationShortLabel = exports.capitalizeFirstLetter = exports.flexLeftRow = exports.getFrenchDayLabel = exports.getDayOfWeek = exports.findScheduleByDayOfWeek = exports.formatTime = exports.getFormattedIntervals = exports.getFormattedSchedule = exports.formatPhoneNumber = void 0;
4
4
  var Enums_1 = require("./Enums");
5
+ var formatPhoneNumber = function (phoneNumber) {
6
+ var formattedNumber = "";
7
+ if (phoneNumber) {
8
+ for (var i = 0; i < phoneNumber.length; i++) {
9
+ if (i > 0 && i % 2 === 0) {
10
+ formattedNumber += ".";
11
+ }
12
+ formattedNumber += phoneNumber[i];
13
+ }
14
+ }
15
+ return formattedNumber;
16
+ };
17
+ exports.formatPhoneNumber = formatPhoneNumber;
18
+ var getFormattedSchedule = function (schedule, dayIndex) {
19
+ if (schedule) {
20
+ return "".concat((0, exports.getFrenchDayLabel)(schedule.dayOfWeek), " : ").concat((0, exports.getFormattedIntervals)(schedule.intervals));
21
+ }
22
+ else {
23
+ return "".concat((0, exports.getFrenchDayLabel)((0, exports.getDayOfWeek)(dayIndex)), " : ferm\u00E9");
24
+ }
25
+ };
26
+ exports.getFormattedSchedule = getFormattedSchedule;
27
+ var getFormattedIntervals = function (intervals) {
28
+ if (intervals) {
29
+ var times_1 = "";
30
+ sortMovaIntervals(intervals).map(function (interval, index) {
31
+ if (index > 0) {
32
+ times_1 = "".concat(times_1, " | ");
33
+ }
34
+ times_1 = "".concat(times_1, " ").concat((0, exports.formatTime)(interval.startTime), " - ").concat((0, exports.formatTime)(interval.endTime));
35
+ });
36
+ return times_1;
37
+ }
38
+ };
39
+ exports.getFormattedIntervals = getFormattedIntervals;
40
+ var formatTime = function (date) {
41
+ if (date) {
42
+ var strDate = date.toString();
43
+ return strDate.substring(0, 5);
44
+ }
45
+ };
46
+ exports.formatTime = formatTime;
47
+ var sortMovaIntervals = function (intervals) {
48
+ if (intervals) {
49
+ return intervals.sort(function (a, b) {
50
+ // Convertir en Date si nécessaire
51
+ var startTimeA = a.startTime instanceof Date ? a.startTime : new Date(a.startTime);
52
+ var startTimeB = b.startTime instanceof Date ? b.startTime : new Date(b.startTime);
53
+ // Gérer les valeurs nulles
54
+ if (startTimeA === null && startTimeB === null)
55
+ return 0;
56
+ if (startTimeA === null)
57
+ return 1;
58
+ if (startTimeB === null)
59
+ return -1;
60
+ // Comparer les dates
61
+ return startTimeA.getTime() - startTimeB.getTime();
62
+ });
63
+ }
64
+ return [];
65
+ };
66
+ var findScheduleByDayOfWeek = function (schedules, dayIndex) {
67
+ var foundSchedule = schedules.find(function (schedule) { return schedule.dayOfWeek === (0, exports.getDayOfWeek)(dayIndex); });
68
+ return foundSchedule ? foundSchedule : null;
69
+ };
70
+ exports.findScheduleByDayOfWeek = findScheduleByDayOfWeek;
71
+ var getDayOfWeek = function (index) {
72
+ switch (index) {
73
+ case 0: return Enums_1.DayOfWeek.MONDAY;
74
+ case 1: return Enums_1.DayOfWeek.TUESDAY;
75
+ case 2: return Enums_1.DayOfWeek.WEDNESDAY;
76
+ case 3: return Enums_1.DayOfWeek.THURSDAY;
77
+ case 4: return Enums_1.DayOfWeek.FRIDAY;
78
+ case 5: return Enums_1.DayOfWeek.SATURDAY;
79
+ case 6: return Enums_1.DayOfWeek.SUNDAY;
80
+ }
81
+ };
82
+ exports.getDayOfWeek = getDayOfWeek;
83
+ var getFrenchDayLabel = function (day) {
84
+ switch (day) {
85
+ case Enums_1.DayOfWeek.MONDAY: return 'Lundi';
86
+ case Enums_1.DayOfWeek.TUESDAY: return 'Mardi';
87
+ case Enums_1.DayOfWeek.WEDNESDAY: return 'Mercredi';
88
+ case Enums_1.DayOfWeek.THURSDAY: return 'Jeudi';
89
+ case Enums_1.DayOfWeek.FRIDAY: return 'Vendredi';
90
+ case Enums_1.DayOfWeek.SATURDAY: return 'Samedi';
91
+ case Enums_1.DayOfWeek.SUNDAY: return 'Dimanche';
92
+ }
93
+ };
94
+ exports.getFrenchDayLabel = getFrenchDayLabel;
5
95
  exports.flexLeftRow = {
6
96
  display: 'flex',
7
97
  justifyContent: 'start',
package/index.ts CHANGED
@@ -52,7 +52,7 @@ export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval,
52
52
  // Export des méthodes utilitaires
53
53
  export { readCookie, deleteCookie } from './src/helpers/CookieUtils';
54
54
  export { validateField, formatVehicleTire, formatFrenchVehiclePlate, isEmpty, getApplicationShortLabel,
55
- capitalizeFirstLetter, flexLeftRow } from './src/helpers/Tools';
55
+ capitalizeFirstLetter, flexLeftRow, formatPhoneNumber, getFormattedSchedule, getFormattedIntervals, findScheduleByDayOfWeek } from './src/helpers/Tools';
56
56
  export { validatePhoneNumber, validateText, validateEmail } from './src/helpers/Validator';
57
57
  export { formatDateByCountryCode, getLongFormattedDateTime } from './src/helpers/DateUtils';
58
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@movalib/movalib-commons",
3
- "version": "1.1.46",
3
+ "version": "1.1.48",
4
4
  "description": "Bibliothèque d'objets communs à l'ensemble des projets React de Movalib",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -55,6 +55,7 @@ export enum APIMethod {
55
55
  }
56
56
 
57
57
  export enum DateFormatTypes {
58
+ TIME_ONLY = "HH:mm",
58
59
  SHORT_FORMAT_DATE = 'dd/MM/yyyy',
59
60
  LONG_FORMAT_DATETIME = 'dd/MM/yyyy HH:mm:ss',
60
61
  LONG_FORMAT_DATETIME_LITERAL = "EEEE dd MMMM yyyy 'à' HH:mm"
@@ -1,8 +1,100 @@
1
1
  import Cookies from "js-cookie";
2
2
  import VehicleTire from "../models/VehicleTire";
3
- import { MovaFormField } from "./Types";
3
+ import { MovaFormField, MovaInterval } from "./Types";
4
4
  import { CSSProperties } from "react";
5
- import { PartsApplicationType, VehiclePlateFormat } from "./Enums";
5
+ import { DayOfWeek, PartsApplicationType, VehiclePlateFormat } from "./Enums";
6
+ import Schedule from "../models/Schedule";
7
+
8
+ export const formatPhoneNumber = (phoneNumber: string): string => {
9
+ let formattedNumber = "";
10
+
11
+ if(phoneNumber){
12
+ for (let i = 0; i < phoneNumber.length; i++) {
13
+ if (i > 0 && i % 2 === 0) {
14
+ formattedNumber += ".";
15
+ }
16
+ formattedNumber += phoneNumber[i];
17
+ }
18
+ }
19
+
20
+ return formattedNumber;
21
+ };
22
+
23
+ export const getFormattedSchedule = (schedule: Schedule | null, dayIndex: number) => {
24
+ if(schedule){
25
+ return `${getFrenchDayLabel(schedule.dayOfWeek)} : ${getFormattedIntervals(schedule.intervals)}`
26
+ } else {
27
+ return `${getFrenchDayLabel(getDayOfWeek(dayIndex))} : fermé`;
28
+ }
29
+ }
30
+
31
+ export const getFormattedIntervals = (intervals: MovaInterval[]) => {
32
+ if(intervals){
33
+ let times:string = "";
34
+ sortMovaIntervals(intervals).map((interval:MovaInterval, index) => {
35
+ if(index > 0){
36
+ times = `${times} | `;
37
+ }
38
+ times = `${times} ${formatTime(interval.startTime)} - ${formatTime(interval.endTime)}`
39
+ })
40
+ return times;
41
+ }
42
+ }
43
+
44
+ export const formatTime = (date: string | Date | null) => {
45
+ if(date){
46
+ let strDate:string = date.toString();
47
+ return strDate.substring(0, 5);
48
+ }
49
+ };
50
+
51
+ const sortMovaIntervals = (intervals: MovaInterval[]): MovaInterval[] => {
52
+ if(intervals){
53
+ return intervals.sort((a, b) => {
54
+ // Convertir en Date si nécessaire
55
+ const startTimeA = a.startTime instanceof Date ? a.startTime : new Date(a.startTime as string);
56
+ const startTimeB = b.startTime instanceof Date ? b.startTime : new Date(b.startTime as string);
57
+
58
+ // Gérer les valeurs nulles
59
+ if (startTimeA === null && startTimeB === null) return 0;
60
+ if (startTimeA === null) return 1;
61
+ if (startTimeB === null) return -1;
62
+
63
+ // Comparer les dates
64
+ return startTimeA.getTime() - startTimeB.getTime();
65
+ });
66
+ }
67
+ return [];
68
+ }
69
+
70
+ export const findScheduleByDayOfWeek = (schedules: Schedule[], dayIndex: number): Schedule | null => {
71
+ const foundSchedule = schedules.find(schedule => schedule.dayOfWeek === getDayOfWeek(dayIndex));
72
+ return foundSchedule ? foundSchedule : null;
73
+ };
74
+
75
+ export const getDayOfWeek = (index:number) => {
76
+ switch (index) {
77
+ case 0 : return DayOfWeek.MONDAY;
78
+ case 1 : return DayOfWeek.TUESDAY;
79
+ case 2 : return DayOfWeek.WEDNESDAY;
80
+ case 3 : return DayOfWeek.THURSDAY;
81
+ case 4 : return DayOfWeek.FRIDAY;
82
+ case 5 : return DayOfWeek.SATURDAY;
83
+ case 6 : return DayOfWeek.SUNDAY;
84
+ }
85
+ }
86
+
87
+ export const getFrenchDayLabel = (day:DayOfWeek | undefined) => {
88
+ switch (day) {
89
+ case DayOfWeek.MONDAY: return 'Lundi';
90
+ case DayOfWeek.TUESDAY: return 'Mardi';
91
+ case DayOfWeek.WEDNESDAY: return 'Mercredi';
92
+ case DayOfWeek.THURSDAY: return 'Jeudi';
93
+ case DayOfWeek.FRIDAY: return 'Vendredi';
94
+ case DayOfWeek.SATURDAY: return 'Samedi';
95
+ case DayOfWeek.SUNDAY: return 'Dimanche';
96
+ }
97
+ }
6
98
 
7
99
  export const flexLeftRow:CSSProperties = {
8
100
  display: 'flex',