@movalib/movalib-commons 1.1.14 → 1.1.16
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 +13 -9
- package/dist/devIndex.js +2 -2
- package/dist/src/GenderSelector.js +1 -1
- package/dist/src/MovaLogin.d.ts +1 -0
- package/dist/src/MovaLogin.js +27 -10
- package/dist/src/MovaSignUp.d.ts +1 -0
- package/dist/src/MovaSignUp.js +45 -12
- package/dist/src/assets/images/logo/logo_large_dm.png +0 -0
- package/dist/src/assets/images/logo/logo_pro_large_dm.png +0 -0
- package/package.json +1 -1
- package/src/GenderSelector.tsx +1 -1
- package/src/MovaLogin.tsx +24 -4
- package/src/MovaSignUp.tsx +46 -8
- package/src/assets/images/logo/logo_large_dm.png +0 -0
- package/src/assets/images/logo/logo_pro_large_dm.png +0 -0
package/devIndex.tsx
CHANGED
|
@@ -106,15 +106,19 @@ const App = () => {
|
|
|
106
106
|
<ThemeProvider theme={theme}>
|
|
107
107
|
<Box sx={{ mb: 4}}>
|
|
108
108
|
|
|
109
|
-
<MovaLogin
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
<MovaLogin
|
|
110
|
+
darkMode={true}
|
|
111
|
+
movaAppType={MovaAppType.GARAGE}
|
|
112
|
+
version="0.1.3"
|
|
113
|
+
onSubmit={function (form: MovaLoginForm): void {
|
|
114
|
+
alert('Form Submitted !');
|
|
115
|
+
} } onSubmitForgotPassword={function (email: string): void {
|
|
116
|
+
throw new Error('Function not implemented.');
|
|
117
|
+
} } />
|
|
118
|
+
|
|
119
|
+
<MovaSignUp
|
|
120
|
+
darkMode={true}
|
|
121
|
+
movaAppType={MovaAppType.INDIVIDUAL} onSubmit={function (form: MovaLoginForm): void {
|
|
118
122
|
alert('Form Submitted !');
|
|
119
123
|
} } />
|
|
120
124
|
|
package/dist/devIndex.js
CHANGED
|
@@ -118,11 +118,11 @@ var App = function () {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
-
return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(LocalizationProvider_1.LocalizationProvider, __assign({ dateAdapter: AdapterDateFns_1.AdapterDateFns, adapterLocale: fr_1.default }, { children: (0, jsx_runtime_1.jsxs)(styles_1.ThemeProvider, __assign({ theme: theme_1.default }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ sx: { mb: 4 } }, { children: [(0, jsx_runtime_1.jsx)(MovaLogin_1.default, { movaAppType: Enums_1.MovaAppType.GARAGE, version: "0.1.3", onSubmit: function (form) {
|
|
121
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(LocalizationProvider_1.LocalizationProvider, __assign({ dateAdapter: AdapterDateFns_1.AdapterDateFns, adapterLocale: fr_1.default }, { children: (0, jsx_runtime_1.jsxs)(styles_1.ThemeProvider, __assign({ theme: theme_1.default }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ sx: { mb: 4 } }, { children: [(0, jsx_runtime_1.jsx)(MovaLogin_1.default, { darkMode: true, movaAppType: Enums_1.MovaAppType.GARAGE, version: "0.1.3", onSubmit: function (form) {
|
|
122
122
|
alert('Form Submitted !');
|
|
123
123
|
}, onSubmitForgotPassword: function (email) {
|
|
124
124
|
throw new Error('Function not implemented.');
|
|
125
|
-
} }), (0, jsx_runtime_1.jsx)(MovaSignUp_1.default, { movaAppType: Enums_1.MovaAppType.INDIVIDUAL, onSubmit: function (form) {
|
|
125
|
+
} }), (0, jsx_runtime_1.jsx)(MovaSignUp_1.default, { darkMode: true, movaAppType: Enums_1.MovaAppType.INDIVIDUAL, onSubmit: function (form) {
|
|
126
126
|
alert('Form Submitted !');
|
|
127
127
|
} }), (0, jsx_runtime_1.jsx)(QRCode_1.default, { data: getQRCodeData(), showDownload: true }), (0, jsx_runtime_1.jsx)("div", { style: { marginTop: '40px' } }), (0, jsx_runtime_1.jsx)("div", __assign({ style: Tools_1.flexCenter }, { children: (0, jsx_runtime_1.jsx)(ScheduleFields_1.default, { schedules: garage === null || garage === void 0 ? void 0 : garage.schedules, size: "small", timePickerStep: 30, onChange: handleScheduleChange }) }))] })), (0, jsx_runtime_1.jsx)(material_1.Box, __assign({ style: Tools_1.flexCenter }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ onClick: function () { return setOpenAccountValidation(!openAccountValidation); } }, { children: "Validation de compte" })) })), openAccountValidation && (0, jsx_runtime_1.jsx)(AccountValidation_1.default, { movaAppType: Enums_1.MovaAppType.GARAGE, onSubmit: function (success, message) {
|
|
128
128
|
throw new Error('Function not implemented.');
|
|
@@ -15,6 +15,6 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
15
15
|
var material_1 = require("@mui/material");
|
|
16
16
|
var GenderSelector = function (_a) {
|
|
17
17
|
var handleSelectChange = _a.handleSelectChange, form = _a.form, required = _a.required, sx = _a.sx;
|
|
18
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ fullWidth: true, margin: "normal", required: required, sx: __assign({}, sx)
|
|
18
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ fullWidth: true, margin: "normal", required: required, sx: __assign({}, sx) }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, __assign({ id: "gender-label" }, { children: "Sexe" })), (0, jsx_runtime_1.jsxs)(material_1.Select, __assign({ labelId: "gender-label", id: "gender", name: "gender", label: "Sexe", value: form.gender.value, onChange: function (e) { return handleSelectChange(e); } }, { children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: "MALE" }, { children: "Homme" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: "FEMALE" }, { children: "Femme" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: "OTHER" }, { children: "Autre" }))] })), (0, jsx_runtime_1.jsx)(material_1.FormHelperText, { children: form.gender.error })] })));
|
|
19
19
|
};
|
|
20
20
|
exports.default = GenderSelector;
|
package/dist/src/MovaLogin.d.ts
CHANGED
package/dist/src/MovaLogin.js
CHANGED
|
@@ -55,6 +55,8 @@ var react_1 = require("react");
|
|
|
55
55
|
var lab_1 = require("@mui/lab");
|
|
56
56
|
var logo_large_png_1 = __importDefault(require("./assets/images/logo/logo_large.png"));
|
|
57
57
|
var logo_pro_large_png_1 = __importDefault(require("./assets/images/logo/logo_pro_large.png"));
|
|
58
|
+
var logo_large_dm_png_1 = __importDefault(require("./assets/images/logo/logo_large_dm.png"));
|
|
59
|
+
var logo_pro_large_dm_png_1 = __importDefault(require("./assets/images/logo/logo_pro_large_dm.png"));
|
|
58
60
|
var leaf_green_large_png_1 = __importDefault(require("./assets/images/leaf_green_large.png"));
|
|
59
61
|
var leaf_pink_large_png_1 = __importDefault(require("./assets/images/leaf_pink_large.png"));
|
|
60
62
|
var material_1 = require("@mui/material");
|
|
@@ -83,13 +85,13 @@ var initialFormState = {
|
|
|
83
85
|
* ATTENTION : la page attendue pour le bouton "Créer mon compte" doit pointer vers "/signup"
|
|
84
86
|
*/
|
|
85
87
|
var MovaLogin = function (_a) {
|
|
86
|
-
var loading = _a.loading, movaAppType = _a.movaAppType, onSubmit = _a.onSubmit, onSubmitForgotPassword = _a.onSubmitForgotPassword, alertMessage = _a.alertMessage, alertSeverity = _a.alertSeverity, version = _a.version;
|
|
87
|
-
var
|
|
88
|
-
var
|
|
88
|
+
var loading = _a.loading, movaAppType = _a.movaAppType, onSubmit = _a.onSubmit, onSubmitForgotPassword = _a.onSubmitForgotPassword, _b = _a.darkMode, darkMode = _b === void 0 ? false : _b, alertMessage = _a.alertMessage, alertSeverity = _a.alertSeverity, version = _a.version;
|
|
89
|
+
var _c = (0, react_1.useState)(initialFormState), form = _c[0], setForm = _c[1];
|
|
90
|
+
var _d = (0, react_1.useState)(""), message = _d[0], setMessage = _d[1];
|
|
89
91
|
var theme = (0, material_1.useTheme)();
|
|
90
92
|
var history = (0, react_router_dom_1.useHistory)();
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
+
var _e = (0, react_1.useState)(false), openForgotPassword = _e[0], setOpenForgotPassword = _e[1];
|
|
94
|
+
var _f = (0, react_1.useState)(false), showPassword = _f[0], setShowPassword = _f[1];
|
|
93
95
|
var handleInputChange = function (e) {
|
|
94
96
|
var _a;
|
|
95
97
|
var fieldName = e.target.name;
|
|
@@ -125,9 +127,16 @@ var MovaLogin = function (_a) {
|
|
|
125
127
|
return newForm.email.isValid && newForm.password.isValid;
|
|
126
128
|
};
|
|
127
129
|
var getMovaLogo = function () {
|
|
128
|
-
|
|
129
|
-
movaAppType === Enums_1.MovaAppType.
|
|
130
|
-
movaAppType === Enums_1.MovaAppType.
|
|
130
|
+
if (darkMode) {
|
|
131
|
+
return movaAppType === Enums_1.MovaAppType.GARAGE ? logo_pro_large_dm_png_1.default :
|
|
132
|
+
movaAppType === Enums_1.MovaAppType.INDIVIDUAL ? logo_large_dm_png_1.default :
|
|
133
|
+
movaAppType === Enums_1.MovaAppType.ADMIN ? logo_large_dm_png_1.default : logo_large_dm_png_1.default;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return movaAppType === Enums_1.MovaAppType.GARAGE ? logo_pro_large_png_1.default :
|
|
137
|
+
movaAppType === Enums_1.MovaAppType.INDIVIDUAL ? logo_large_png_1.default :
|
|
138
|
+
movaAppType === Enums_1.MovaAppType.ADMIN ? logo_large_png_1.default : logo_large_png_1.default;
|
|
139
|
+
}
|
|
131
140
|
};
|
|
132
141
|
var handleOnClickSignUp = function (e) {
|
|
133
142
|
e.preventDefault();
|
|
@@ -170,9 +179,17 @@ var MovaLogin = function (_a) {
|
|
|
170
179
|
display: 'flex',
|
|
171
180
|
flexDirection: 'column',
|
|
172
181
|
alignItems: 'center',
|
|
173
|
-
} }, { children: [(0, jsx_runtime_1.jsx)("img", { src: getMovaLogo(), style: { width: '80%' } }), (0, jsx_runtime_1.jsx)("br", {})] })), (0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ component: "form", onSubmit: handleSubmit, noValidate: true, sx: { mt: 1 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, id: "email", label: "Adresse email", name: "email", autoComplete: "email", autoFocus: true, onChange: function (e) { return handleInputChange(e); }, value: form.email.value, error: !form.email.isValid, helperText: form.email.error
|
|
182
|
+
} }, { children: [(0, jsx_runtime_1.jsx)("img", { src: getMovaLogo(), style: { width: '80%' } }), (0, jsx_runtime_1.jsx)("br", {})] })), (0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ component: "form", onSubmit: handleSubmit, noValidate: true, sx: { mt: 1 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, id: "email", label: "Adresse email", name: "email", autoComplete: "email", autoFocus: true, onChange: function (e) { return handleInputChange(e); }, value: form.email.value, error: !form.email.isValid, helperText: form.email.error, sx: {
|
|
183
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
184
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
185
|
+
}
|
|
186
|
+
} }), (0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, name: "password", label: "Mot de passe", type: showPassword ? 'text' : 'password', id: "password", autoComplete: "current-password", onChange: function (e) { return handleInputChange(e); }, value: form.password.value, error: !form.password.isValid, helperText: form.password.error, InputProps: {
|
|
174
187
|
endAdornment: ((0, jsx_runtime_1.jsx)(InputAdornment_1.default, __assign({ position: "end" }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ edge: "end", onClick: handleClickShowPassword }, { children: showPassword ? (0, jsx_runtime_1.jsx)(VisibilityOff_1.default, {}) : (0, jsx_runtime_1.jsx)(Visibility_1.default, {}) })) }))),
|
|
175
|
-
}
|
|
188
|
+
}, sx: {
|
|
189
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
190
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
191
|
+
}
|
|
192
|
+
} }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { value: "remember", color: "primary" }), label: "Se souvenir de moi" }), (0, jsx_runtime_1.jsx)(lab_1.LoadingButton, __assign({ loading: loading, type: "submit", fullWidth: true, variant: "contained", sx: { mt: 3, mb: 2, backgroundColor: darkMode ? theme.palette.primary.dark : theme.palette.primary.main } }, { children: (0, jsx_runtime_1.jsx)("span", { children: "Se connecter" }) })), alertMessage && alertSeverity && (0, jsx_runtime_1.jsx)(material_1.Alert, __assign({ severity: alertSeverity, sx: { mb: 2 } }, { children: alertMessage })), (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ variant: "body2", color: "text.secondary", onClick: function (e) { return handleOnClickForgotPassword(e); }, sx: { cursor: 'pointer' } }, { children: "Mot de passe oubli\u00E9 ?" })) })), movaAppType === Enums_1.MovaAppType.INDIVIDUAL && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ variant: "body2", color: "text.secondary", onClick: function (e) { return handleOnClickSignUp(e); }, sx: { cursor: 'pointer' } }, { children: "Cr\u00E9er mon compte" })) }))] }))] })), (0, jsx_runtime_1.jsx)(MovaCopyright_1.default, { sx: { mt: 8, mb: 1 } }), version && (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: 'body2', color: theme.palette.grey[200], sx: { textAlign: 'center' } }, { children: version })), openForgotPassword && dialogForgotPassword()] })), (0, jsx_runtime_1.jsx)("img", { src: leaf_pink_large_png_1.default, style: { position: 'fixed',
|
|
176
193
|
float: 'right',
|
|
177
194
|
width: '250px',
|
|
178
195
|
height: '400px',
|
package/dist/src/MovaSignUp.d.ts
CHANGED
package/dist/src/MovaSignUp.js
CHANGED
|
@@ -56,6 +56,8 @@ var lab_1 = require("@mui/lab");
|
|
|
56
56
|
var DatePicker_1 = require("@mui/x-date-pickers/DatePicker");
|
|
57
57
|
var logo_large_png_1 = __importDefault(require("./assets/images/logo/logo_large.png"));
|
|
58
58
|
var logo_pro_large_png_1 = __importDefault(require("./assets/images/logo/logo_pro_large.png"));
|
|
59
|
+
var logo_large_dm_png_1 = __importDefault(require("./assets/images/logo/logo_large_dm.png"));
|
|
60
|
+
var logo_pro_large_dm_png_1 = __importDefault(require("./assets/images/logo/logo_pro_large_dm.png"));
|
|
59
61
|
var leaf_green_large_png_1 = __importDefault(require("./assets/images/leaf_green_large.png"));
|
|
60
62
|
var leaf_pink_large_png_1 = __importDefault(require("./assets/images/leaf_pink_large.png"));
|
|
61
63
|
var material_1 = require("@mui/material");
|
|
@@ -89,11 +91,12 @@ var initialUserFormState = {
|
|
|
89
91
|
* ATTENTION : le lien de consultation des CGU doit pointer vers "/terms-and-conditions"
|
|
90
92
|
*/
|
|
91
93
|
var MovaLogin = function (_a) {
|
|
92
|
-
var loading = _a.loading, movaAppType = _a.movaAppType, onSubmit = _a.onSubmit, alertMessage = _a.alertMessage, alertSeverity = _a.alertSeverity;
|
|
93
|
-
var
|
|
94
|
+
var loading = _a.loading, movaAppType = _a.movaAppType, onSubmit = _a.onSubmit, _b = _a.darkMode, darkMode = _b === void 0 ? false : _b, alertMessage = _a.alertMessage, alertSeverity = _a.alertSeverity;
|
|
95
|
+
var _c = (0, react_1.useState)(initialUserFormState), userForm = _c[0], setUserForm = _c[1];
|
|
94
96
|
var history = (0, react_router_dom_1.useHistory)();
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
+
var _d = (0, react_1.useState)(""), message = _d[0], setMessage = _d[1];
|
|
98
|
+
var theme = (0, material_1.useTheme)();
|
|
99
|
+
var _e = (0, react_1.useState)(false), showPassword = _e[0], setShowPassword = _e[1];
|
|
97
100
|
var handleDateChange = function (name, date) {
|
|
98
101
|
var _a;
|
|
99
102
|
console.log(date);
|
|
@@ -162,9 +165,16 @@ var MovaLogin = function (_a) {
|
|
|
162
165
|
&& newForm.gender.isValid && newForm.birthDate.isValid && newForm.acceptsTerms.isValid;
|
|
163
166
|
};
|
|
164
167
|
var getMovaLogo = function () {
|
|
165
|
-
|
|
166
|
-
movaAppType === Enums_1.MovaAppType.
|
|
167
|
-
movaAppType === Enums_1.MovaAppType.
|
|
168
|
+
if (darkMode) {
|
|
169
|
+
return movaAppType === Enums_1.MovaAppType.GARAGE ? logo_pro_large_dm_png_1.default :
|
|
170
|
+
movaAppType === Enums_1.MovaAppType.INDIVIDUAL ? logo_large_dm_png_1.default :
|
|
171
|
+
movaAppType === Enums_1.MovaAppType.ADMIN ? logo_large_dm_png_1.default : logo_large_dm_png_1.default;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return movaAppType === Enums_1.MovaAppType.GARAGE ? logo_pro_large_png_1.default :
|
|
175
|
+
movaAppType === Enums_1.MovaAppType.INDIVIDUAL ? logo_large_png_1.default :
|
|
176
|
+
movaAppType === Enums_1.MovaAppType.ADMIN ? logo_large_png_1.default : logo_large_png_1.default;
|
|
177
|
+
}
|
|
168
178
|
};
|
|
169
179
|
var handleOnClickLogin = function (e) {
|
|
170
180
|
e.preventDefault();
|
|
@@ -188,20 +198,43 @@ var MovaLogin = function (_a) {
|
|
|
188
198
|
display: 'flex',
|
|
189
199
|
flexDirection: 'column',
|
|
190
200
|
alignItems: 'center',
|
|
191
|
-
} }, { children: [(0, jsx_runtime_1.jsx)("img", { src: getMovaLogo(), style: { width: '50%' } }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "button", sx: { pt: 2 } }, { children: "Nouveau compte utilisateur" }))] })), (0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ component: "form", onSubmit: handleSubmit, noValidate: true, sx: { mt: 1 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, autoFocus: true, fullWidth: true, id: "firstname", label: "Pr\u00E9nom", name: "firstname", autoComplete: "given-name", onChange: function (e) { return handleInputChange(e); }, value: userForm.firstname.value, error: Boolean(userForm.firstname.error), helperText: userForm.firstname.error
|
|
201
|
+
} }, { children: [(0, jsx_runtime_1.jsx)("img", { src: getMovaLogo(), style: { width: '50%' } }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "button", sx: { pt: 2 } }, { children: "Nouveau compte utilisateur" }))] })), (0, jsx_runtime_1.jsxs)(material_1.Box, __assign({ component: "form", onSubmit: handleSubmit, noValidate: true, sx: { mt: 1 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, autoFocus: true, fullWidth: true, id: "firstname", label: "Pr\u00E9nom", name: "firstname", autoComplete: "given-name", onChange: function (e) { return handleInputChange(e); }, value: userForm.firstname.value, error: Boolean(userForm.firstname.error), helperText: userForm.firstname.error, sx: {
|
|
202
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
203
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
204
|
+
}
|
|
205
|
+
} }), (0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, id: "lastname", label: "Nom", name: "lastname", autoComplete: "family-name", onChange: function (e) { return handleInputChange(e); }, value: userForm.lastname.value, error: Boolean(userForm.lastname.error), helperText: userForm.lastname.error, sx: {
|
|
206
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
207
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
208
|
+
}
|
|
209
|
+
} }), (0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, id: "email", label: "Adresse email", name: "email", autoComplete: "email", onChange: function (e) { return handleInputChange(e); }, value: userForm.email.value, error: !userForm.email.isValid, helperText: userForm.email.error, sx: {
|
|
210
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
211
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
212
|
+
}
|
|
213
|
+
} }), (0, jsx_runtime_1.jsx)(material_1.TextField, { margin: "normal", required: true, fullWidth: true, name: "password", label: "Mot de passe", type: showPassword ? 'text' : 'password', id: "password", autoComplete: "current-password", onChange: function (e) { return handleInputChange(e); }, value: userForm.password.value, error: !userForm.password.isValid, helperText: Boolean(userForm.password.error) ? userForm.password.error : "10 caractères minimum, 1 majuscule, 1 minuscule", InputProps: {
|
|
192
214
|
endAdornment: ((0, jsx_runtime_1.jsx)(InputAdornment_1.default, __assign({ position: "end" }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ edge: "end", onClick: handleClickShowPassword }, { children: showPassword ? (0, jsx_runtime_1.jsx)(VisibilityOff_1.default, {}) : (0, jsx_runtime_1.jsx)(Visibility_1.default, {}) })) }))),
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
215
|
+
}, sx: {
|
|
216
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
217
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
218
|
+
}
|
|
219
|
+
} }), (0, jsx_runtime_1.jsx)(GenderSelector_1.default, { handleSelectChange: handleSelectChange, form: userForm, required: true, sx: {
|
|
220
|
+
width: '40%',
|
|
221
|
+
mr: 2,
|
|
222
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
223
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
224
|
+
}
|
|
225
|
+
} }), (0, jsx_runtime_1.jsx)(DatePicker_1.DatePicker, { label: "Date de naissance", value: userForm.birthDate.value, format: 'dd / MM / yyyy', formatDensity: 'dense', openTo: "year", views: ['year', 'month', 'day'], onChange: function (newValue) { return handleDateChange('birthDate', newValue); }, slotProps: {
|
|
196
226
|
textField: {
|
|
197
227
|
required: true,
|
|
198
228
|
error: !userForm.birthDate.isValid,
|
|
199
229
|
sx: {
|
|
200
230
|
width: '50%', mt: 2, float: 'right',
|
|
201
231
|
padding: 0,
|
|
232
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
233
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
234
|
+
}
|
|
202
235
|
},
|
|
203
236
|
},
|
|
204
|
-
} }), (0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ error: !userForm.acceptsTerms.isValid }, { children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { name: "acceptsTerms", color: "primary", checked: userForm.acceptsTerms.value, onChange: function (e, checked) { return handleCheckboxChange(e, checked); } }), label: (0, jsx_runtime_1.jsxs)("span", { children: ["J'accepte les", ' ', (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ href: "/terms-and-conditions", target: "_blank" }, { children: "Conditions G\u00E9n\u00E9rales d'Utilisation" }))] }) }), (0, jsx_runtime_1.jsx)(material_1.FormHelperText, { children: userForm.acceptsTerms.error })] })), alertMessage && alertSeverity && (0, jsx_runtime_1.jsx)(material_1.Alert, __assign({ severity: alertSeverity, sx: { mb: 2 } }, { children: alertMessage })), (0, jsx_runtime_1.jsx)(lab_1.LoadingButton, __assign({ loading: loading, type: "submit", fullWidth: true, variant: "contained", sx: { mt: 3, mb: 2 } }, { children: (0, jsx_runtime_1.jsx)("span", { children: "Cr\u00E9er mon compte" }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ container: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ variant: "body2", color: "text.secondary", onClick: function (e) { return handleOnClickLogin(e); }, sx: { cursor: 'pointer' } }, { children: "Se connecter" })) })) }))] })), (0, jsx_runtime_1.jsx)(MovaCopyright_1.default, { sx: { mt: 8, mb: 4 } })] })), (0, jsx_runtime_1.jsx)("img", { src: leaf_pink_large_png_1.default, style: { position: 'fixed',
|
|
237
|
+
} }), (0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ error: !userForm.acceptsTerms.isValid }, { children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { name: "acceptsTerms", color: "primary", checked: userForm.acceptsTerms.value, onChange: function (e, checked) { return handleCheckboxChange(e, checked); } }), label: (0, jsx_runtime_1.jsxs)("span", { children: ["J'accepte les", ' ', (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ href: "/terms-and-conditions", target: "_blank" }, { children: "Conditions G\u00E9n\u00E9rales d'Utilisation" }))] }) }), (0, jsx_runtime_1.jsx)(material_1.FormHelperText, { children: userForm.acceptsTerms.error })] })), alertMessage && alertSeverity && (0, jsx_runtime_1.jsx)(material_1.Alert, __assign({ severity: alertSeverity, sx: { mb: 2 } }, { children: alertMessage })), (0, jsx_runtime_1.jsx)(lab_1.LoadingButton, __assign({ loading: loading, type: "submit", fullWidth: true, variant: "contained", sx: { mt: 3, mb: 2, backgroundColor: darkMode ? theme.palette.primary.dark : theme.palette.primary.main } }, { children: (0, jsx_runtime_1.jsx)("span", { children: "Cr\u00E9er mon compte" }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ container: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Link, __assign({ variant: "body2", color: "text.secondary", onClick: function (e) { return handleOnClickLogin(e); }, sx: { cursor: 'pointer' } }, { children: "Se connecter" })) })) }))] })), (0, jsx_runtime_1.jsx)(MovaCopyright_1.default, { sx: { mt: 8, mb: 4 } })] })), (0, jsx_runtime_1.jsx)("img", { src: leaf_pink_large_png_1.default, style: { position: 'fixed',
|
|
205
238
|
float: 'right',
|
|
206
239
|
width: '250px',
|
|
207
240
|
height: '400px',
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/src/GenderSelector.tsx
CHANGED
|
@@ -13,7 +13,7 @@ interface GenderSelectorProps {
|
|
|
13
13
|
|
|
14
14
|
const GenderSelector: React.FC<GenderSelectorProps> = ({ handleSelectChange, form, required, sx }) => {
|
|
15
15
|
return (
|
|
16
|
-
<FormControl fullWidth margin="normal" required={required} sx={{ ...sx }}
|
|
16
|
+
<FormControl fullWidth margin="normal" required={required} sx={{ ...sx }} >
|
|
17
17
|
<InputLabel id="gender-label">Sexe</InputLabel>
|
|
18
18
|
<Select
|
|
19
19
|
labelId="gender-label"
|
package/src/MovaLogin.tsx
CHANGED
|
@@ -2,6 +2,8 @@ import { CSSProperties, FormEvent, FunctionComponent, useState } from "react";
|
|
|
2
2
|
import { LoadingButton } from '@mui/lab';
|
|
3
3
|
import LogoLarge from './assets/images/logo/logo_large.png';
|
|
4
4
|
import LogoProLarge from './assets/images/logo/logo_pro_large.png';
|
|
5
|
+
import LogoLargeDarkMode from './assets/images/logo/logo_large_dm.png';
|
|
6
|
+
import LogoProLargeDarkMode from './assets/images/logo/logo_pro_large_dm.png';
|
|
5
7
|
import GreenLeafImage from "./assets/images/leaf_green_large.png";
|
|
6
8
|
import PinkLeafImage from "./assets/images/leaf_pink_large.png";
|
|
7
9
|
import { Alert, AlertColor, Box, Button, Checkbox, Container, CssBaseline, Dialog, DialogActions, DialogContent, DialogContentText,
|
|
@@ -41,6 +43,7 @@ interface MovaLoginProps {
|
|
|
41
43
|
movaAppType: MovaAppType,
|
|
42
44
|
onSubmit: (form: MovaLoginForm) => void,
|
|
43
45
|
onSubmitForgotPassword: (email: string) => void,
|
|
46
|
+
darkMode: boolean,
|
|
44
47
|
alertMessage?: string,
|
|
45
48
|
alertSeverity?: AlertColor,
|
|
46
49
|
loading?: boolean,
|
|
@@ -52,7 +55,7 @@ interface MovaLoginProps {
|
|
|
52
55
|
* ATTENTION : la page attendue pour le bouton "Mot de passe oublié" doit pointer vers "/forgot-password"
|
|
53
56
|
* ATTENTION : la page attendue pour le bouton "Créer mon compte" doit pointer vers "/signup"
|
|
54
57
|
*/
|
|
55
|
-
const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, onSubmit, onSubmitForgotPassword, alertMessage, alertSeverity, version }) => {
|
|
58
|
+
const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, onSubmit, onSubmitForgotPassword, darkMode = false, alertMessage, alertSeverity, version }) => {
|
|
56
59
|
|
|
57
60
|
const [form, setForm] = useState<MovaLoginForm>(initialFormState);
|
|
58
61
|
const [message, setMessage] = useState<string>("");
|
|
@@ -104,9 +107,15 @@ const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, on
|
|
|
104
107
|
|
|
105
108
|
const getMovaLogo = () => {
|
|
106
109
|
|
|
107
|
-
|
|
110
|
+
if(darkMode){
|
|
111
|
+
return movaAppType === MovaAppType.GARAGE ? LogoProLargeDarkMode :
|
|
112
|
+
movaAppType === MovaAppType.INDIVIDUAL ? LogoLargeDarkMode :
|
|
113
|
+
movaAppType === MovaAppType.ADMIN ? LogoLargeDarkMode : LogoLargeDarkMode;
|
|
114
|
+
} else {
|
|
115
|
+
return movaAppType === MovaAppType.GARAGE ? LogoProLarge :
|
|
108
116
|
movaAppType === MovaAppType.INDIVIDUAL ? LogoLarge :
|
|
109
117
|
movaAppType === MovaAppType.ADMIN ? LogoLarge : LogoLarge;
|
|
118
|
+
}
|
|
110
119
|
}
|
|
111
120
|
|
|
112
121
|
const handleOnClickSignUp = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
|
|
@@ -221,6 +230,11 @@ const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, on
|
|
|
221
230
|
value={form.email.value}
|
|
222
231
|
error={!form.email.isValid}
|
|
223
232
|
helperText={form.email.error}
|
|
233
|
+
sx={{
|
|
234
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
235
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
236
|
+
}
|
|
237
|
+
}}
|
|
224
238
|
/>
|
|
225
239
|
<TextField
|
|
226
240
|
margin="normal"
|
|
@@ -241,12 +255,18 @@ const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, on
|
|
|
241
255
|
<IconButton
|
|
242
256
|
edge="end"
|
|
243
257
|
onClick={handleClickShowPassword}
|
|
258
|
+
|
|
244
259
|
>
|
|
245
260
|
{showPassword ? <VisibilityOff /> : <Visibility />}
|
|
246
261
|
</IconButton>
|
|
247
262
|
</InputAdornment>
|
|
248
263
|
),
|
|
249
|
-
}}
|
|
264
|
+
}}
|
|
265
|
+
sx={{
|
|
266
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
267
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
268
|
+
}
|
|
269
|
+
}}
|
|
250
270
|
/>
|
|
251
271
|
<FormControlLabel control={<Checkbox value="remember" color="primary" />}
|
|
252
272
|
label="Se souvenir de moi"
|
|
@@ -257,7 +277,7 @@ const MovaLogin: FunctionComponent<MovaLoginProps> = ({ loading, movaAppType, on
|
|
|
257
277
|
type="submit"
|
|
258
278
|
fullWidth
|
|
259
279
|
variant="contained"
|
|
260
|
-
sx={{ mt: 3, mb: 2 }}>
|
|
280
|
+
sx={{ mt: 3, mb: 2, backgroundColor: darkMode ? theme.palette.primary.dark : theme.palette.primary.main }}>
|
|
261
281
|
<span>Se connecter</span>
|
|
262
282
|
</LoadingButton>
|
|
263
283
|
|
package/src/MovaSignUp.tsx
CHANGED
|
@@ -3,10 +3,12 @@ import { LoadingButton } from '@mui/lab';
|
|
|
3
3
|
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
|
|
4
4
|
import LogoLarge from './assets/images/logo/logo_large.png';
|
|
5
5
|
import LogoProLarge from './assets/images/logo/logo_pro_large.png';
|
|
6
|
+
import LogoLargeDarkMode from './assets/images/logo/logo_large_dm.png';
|
|
7
|
+
import LogoProLargeDarkMode from './assets/images/logo/logo_pro_large_dm.png';
|
|
6
8
|
import GreenLeafImage from "./assets/images/leaf_green_large.png";
|
|
7
9
|
import PinkLeafImage from "./assets/images/leaf_pink_large.png";
|
|
8
10
|
import { Alert, AlertColor, Box, Checkbox, Container, CssBaseline, FormControl, FormControlLabel, FormHelperText, Grid,
|
|
9
|
-
IconButton, Link, SelectChangeEvent, TextField, Typography, TextFieldProps } from "@mui/material";
|
|
11
|
+
IconButton, Link, SelectChangeEvent, TextField, Typography, TextFieldProps, useTheme } from "@mui/material";
|
|
10
12
|
import MovaCopyright from "./MovaCopyright";
|
|
11
13
|
import { MovaFormField, MovaUserSignUpForm } from "./helpers/Types";
|
|
12
14
|
import { MovaAppType } from "./helpers/Enums";
|
|
@@ -47,6 +49,7 @@ const initialUserFormState = {
|
|
|
47
49
|
interface MovaSignUpProps {
|
|
48
50
|
movaAppType: MovaAppType,
|
|
49
51
|
onSubmit: (form: MovaUserSignUpForm) => void,
|
|
52
|
+
darkMode: boolean,
|
|
50
53
|
alertMessage?: string,
|
|
51
54
|
alertSeverity?: AlertColor,
|
|
52
55
|
loading?: boolean
|
|
@@ -56,11 +59,12 @@ interface MovaSignUpProps {
|
|
|
56
59
|
* Formulaire de création d'un compte Movalib (Garage / Utilisateur)
|
|
57
60
|
* ATTENTION : le lien de consultation des CGU doit pointer vers "/terms-and-conditions"
|
|
58
61
|
*/
|
|
59
|
-
const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, onSubmit, alertMessage, alertSeverity }) => {
|
|
62
|
+
const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, onSubmit, darkMode = false, alertMessage, alertSeverity }) => {
|
|
60
63
|
|
|
61
64
|
const [userForm, setUserForm] = useState<MovaUserSignUpForm>(initialUserFormState);
|
|
62
65
|
const history = useHistory();
|
|
63
66
|
const [message, setMessage] = useState<string>("");
|
|
67
|
+
const theme = useTheme();
|
|
64
68
|
const [showPassword, setShowPassword] = useState(false);
|
|
65
69
|
|
|
66
70
|
const handleDateChange = (name: string, date: Date | null) => {
|
|
@@ -143,10 +147,15 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
const getMovaLogo = () => {
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
if(darkMode){
|
|
151
|
+
return movaAppType === MovaAppType.GARAGE ? LogoProLargeDarkMode :
|
|
152
|
+
movaAppType === MovaAppType.INDIVIDUAL ? LogoLargeDarkMode :
|
|
153
|
+
movaAppType === MovaAppType.ADMIN ? LogoLargeDarkMode : LogoLargeDarkMode;
|
|
154
|
+
} else {
|
|
155
|
+
return movaAppType === MovaAppType.GARAGE ? LogoProLarge :
|
|
148
156
|
movaAppType === MovaAppType.INDIVIDUAL ? LogoLarge :
|
|
149
157
|
movaAppType === MovaAppType.ADMIN ? LogoLarge : LogoLarge;
|
|
158
|
+
}
|
|
150
159
|
}
|
|
151
160
|
|
|
152
161
|
const handleOnClickLogin = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
|
|
@@ -201,6 +210,11 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
201
210
|
value={userForm.firstname.value}
|
|
202
211
|
error={Boolean(userForm.firstname.error)}
|
|
203
212
|
helperText={userForm.firstname.error}
|
|
213
|
+
sx={{
|
|
214
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
215
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
216
|
+
}
|
|
217
|
+
}}
|
|
204
218
|
/>
|
|
205
219
|
<TextField
|
|
206
220
|
margin="normal"
|
|
@@ -214,6 +228,11 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
214
228
|
value={userForm.lastname.value}
|
|
215
229
|
error={Boolean(userForm.lastname.error)}
|
|
216
230
|
helperText={userForm.lastname.error}
|
|
231
|
+
sx={{
|
|
232
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
233
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
234
|
+
}
|
|
235
|
+
}}
|
|
217
236
|
/>
|
|
218
237
|
<TextField
|
|
219
238
|
margin="normal"
|
|
@@ -227,6 +246,11 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
227
246
|
value={userForm.email.value}
|
|
228
247
|
error={!userForm.email.isValid}
|
|
229
248
|
helperText={userForm.email.error}
|
|
249
|
+
sx={{
|
|
250
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
251
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
252
|
+
}
|
|
253
|
+
}}
|
|
230
254
|
/>
|
|
231
255
|
<TextField
|
|
232
256
|
margin="normal"
|
|
@@ -253,9 +277,20 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
253
277
|
</InputAdornment>
|
|
254
278
|
),
|
|
255
279
|
}}
|
|
280
|
+
sx={{
|
|
281
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
282
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
283
|
+
}
|
|
284
|
+
}}
|
|
256
285
|
/>
|
|
257
286
|
|
|
258
|
-
<GenderSelector handleSelectChange={handleSelectChange} form={userForm} required sx={{
|
|
287
|
+
<GenderSelector handleSelectChange={handleSelectChange} form={userForm} required sx={{
|
|
288
|
+
width:'40%',
|
|
289
|
+
mr: 2,
|
|
290
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
291
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
292
|
+
}
|
|
293
|
+
}} />
|
|
259
294
|
|
|
260
295
|
{/* <TextField
|
|
261
296
|
margin="normal"
|
|
@@ -279,8 +314,8 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
279
314
|
value={userForm.birthDate.value}
|
|
280
315
|
format='dd / MM / yyyy'
|
|
281
316
|
formatDensity='dense'
|
|
282
|
-
|
|
283
|
-
|
|
317
|
+
openTo="year"
|
|
318
|
+
views={['year', 'month', 'day']}
|
|
284
319
|
onChange={(newValue) => handleDateChange('birthDate', newValue)}
|
|
285
320
|
slotProps={{
|
|
286
321
|
textField: {
|
|
@@ -289,6 +324,9 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
289
324
|
sx: {
|
|
290
325
|
width:'50%', mt: 2, float: 'right',
|
|
291
326
|
padding: 0,
|
|
327
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
328
|
+
borderColor: darkMode ? 'white' : 'default', // Couleur de la bordure
|
|
329
|
+
}
|
|
292
330
|
},
|
|
293
331
|
},
|
|
294
332
|
}}
|
|
@@ -323,7 +361,7 @@ const MovaLogin: FunctionComponent<MovaSignUpProps> = ({ loading, movaAppType, o
|
|
|
323
361
|
type="submit"
|
|
324
362
|
fullWidth
|
|
325
363
|
variant="contained"
|
|
326
|
-
sx={{ mt: 3, mb: 2 }}>
|
|
364
|
+
sx={{ mt: 3, mb: 2, backgroundColor: darkMode ? theme.palette.primary.dark : theme.palette.primary.main }}>
|
|
327
365
|
<span>Créer mon compte</span>
|
|
328
366
|
</LoadingButton>
|
|
329
367
|
|
|
Binary file
|
|
Binary file
|