1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _react = _interopRequireWildcard(require("react"));
|
9 |
|
10 | var _Divider = _interopRequireDefault(require("@material-ui/core/Divider"));
|
11 |
|
12 | var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
13 |
|
14 | var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
|
15 |
|
16 | var _styles = require("@material-ui/core/styles");
|
17 |
|
18 | var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
19 |
|
20 | var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
21 |
|
22 | var _MailOutline = _interopRequireDefault(require("@material-ui/icons/MailOutline"));
|
23 |
|
24 | var _VisibilityOffOutlined = _interopRequireDefault(require("@material-ui/icons/VisibilityOffOutlined"));
|
25 |
|
26 | var _VisibilityOutlined = _interopRequireDefault(require("@material-ui/icons/VisibilityOutlined"));
|
27 |
|
28 | var _VpnKeyOutlined = _interopRequireDefault(require("@material-ui/icons/VpnKeyOutlined"));
|
29 |
|
30 | var _Link = _interopRequireDefault(require("react-router-dom/Link"));
|
31 |
|
32 | var _Page = _interopRequireDefault(require("sharyn/components/Page"));
|
33 |
|
34 | var _toggle = _interopRequireDefault(require("sharyn/util/toggle"));
|
35 |
|
36 | var _i18n = require("../i18n");
|
37 |
|
38 | var _CustomButton = _interopRequireDefault(require("./CustomButton"));
|
39 |
|
40 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
41 |
|
42 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
43 |
|
44 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
|
45 |
|
46 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
47 |
|
48 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
49 |
|
50 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
51 |
|
52 | function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
53 |
|
54 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
55 |
|
56 | var styles = function styles(theme) {
|
57 | return {
|
58 | paperContent: {
|
59 | display: 'flex',
|
60 | flexDirection: 'column',
|
61 | alignItems: 'center'
|
62 | },
|
63 | title: {
|
64 | marginBottom: 30,
|
65 | marginTop: 20
|
66 | },
|
67 | subtitle: {
|
68 | marginBottom: 20,
|
69 | marginTop: 0,
|
70 | color: theme.palette.primary.main
|
71 | },
|
72 | neutralTitle: {
|
73 | marginBottom: 0,
|
74 | fontSize: 24
|
75 | },
|
76 | neutralTitleMessage: {
|
77 | whiteSpace: 'nowrap',
|
78 | marginLeft: -15
|
79 | },
|
80 | neutralDivider: {
|
81 | marginTop: 30
|
82 | },
|
83 | neutralSubtitle: {
|
84 | marginBottom: 20,
|
85 | marginTop: 30,
|
86 | fontWeight: 600,
|
87 | color: theme.palette.secondary.main
|
88 | },
|
89 | pane: {
|
90 | width: '100%'
|
91 | },
|
92 | firstPane: {
|
93 | margin: '0 0 10px',
|
94 | maxWidth: 200
|
95 | },
|
96 | secondPane: {
|
97 | margin: 0,
|
98 | display: 'flex',
|
99 | flexDirection: 'column',
|
100 | alignItems: 'center',
|
101 | maxWidth: 350,
|
102 | padding: '0 25px'
|
103 | },
|
104 | banner: {
|
105 | width: '100%',
|
106 | borderRadius: 5
|
107 | },
|
108 | firstInput: {
|
109 | marginBottom: 15
|
110 | },
|
111 | endAdornment: {
|
112 | height: 40,
|
113 | width: 40,
|
114 | borderRadius: 6,
|
115 | backgroundColor: theme.palette.secondary.light
|
116 | },
|
117 | loginInput: {
|
118 | fontWeight: 400,
|
119 | paddingTop: '0.687rem',
|
120 | paddingBottom: '0.687rem'
|
121 | },
|
122 | switchRoot: {
|
123 | margin: '0 10px'
|
124 | }
|
125 | };
|
126 | };
|
127 |
|
128 | var translations = {
|
129 | logIn: {
|
130 | fr: 'Connexion',
|
131 | en: 'Log In',
|
132 | es: 'Conectarse'
|
133 | },
|
134 | email: {
|
135 | fr: 'Email',
|
136 | en: 'Email',
|
137 | es: 'Email'
|
138 | },
|
139 | password: {
|
140 | fr: 'Mot de passe',
|
141 | en: 'Password',
|
142 | es: 'Contraseña'
|
143 | },
|
144 | 'credentials remembered': {
|
145 | fr: 'Identifiants mémorisés',
|
146 | en: 'Credentials remembered',
|
147 | es: 'Credenciales recordadas'
|
148 | },
|
149 | 'forgotten password': {
|
150 | fr: 'Mot de passe oublié ?',
|
151 | en: 'Forgotten password?',
|
152 | es: 'Contraseña olvidada?'
|
153 | }
|
154 | };
|
155 | var configLanguage = (0, _i18n.getLanguage)();
|
156 |
|
157 | var LoginPageJSX = function LoginPageJSX(_ref) {
|
158 | var _storyLanguage, _imgUrl;
|
159 |
|
160 | var classes = _ref.classes,
|
161 | title = _ref.title,
|
162 | subtitle = _ref.subtitle,
|
163 | onSubmit = _ref.onSubmit,
|
164 | _ref$forgottenPasswor = _ref.forgottenPasswordPath,
|
165 | forgottenPasswordPath = _ref$forgottenPasswor === void 0 ? '/forgotten-password' : _ref$forgottenPasswor,
|
166 | isLoading = _ref.isLoading,
|
167 | imgUrl = _ref.imgUrl,
|
168 | storyLanguage = _ref.storyLanguage,
|
169 | style = _ref.style,
|
170 | isNeutral = _ref.isNeutral,
|
171 | message = _ref.message,
|
172 | head = _ref.head;
|
173 | var language = (_storyLanguage = storyLanguage) !== null && _storyLanguage !== void 0 ? _storyLanguage : configLanguage;
|
174 |
|
175 | var _useState = (0, _react.useState)('password'),
|
176 | _useState2 = _slicedToArray(_useState, 2),
|
177 | passwordType = _useState2[0],
|
178 | setPasswordType = _useState2[1];
|
179 |
|
180 | return _react["default"].createElement(_Page["default"], {
|
181 | noPaper: true
|
182 | }, _react["default"].createElement("div", _extends({
|
183 | className: classes.paperContent
|
184 | }, {
|
185 | style: style
|
186 | }), _react["default"].createElement("div", {
|
187 | className: "".concat(classes.firstPane, " ").concat(classes.pane)
|
188 | }, isNeutral ? _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_Typography["default"], {
|
189 | variant: "h2",
|
190 | align: "center",
|
191 | className: classes.neutralTitle
|
192 | }, title, ","), _react["default"].createElement(_Typography["default"], {
|
193 | variant: "h5",
|
194 | align: "center"
|
195 | }, subtitle), _react["default"].createElement(_Typography["default"], {
|
196 | variant: "h5",
|
197 | align: "center",
|
198 | className: classes.neutralTitleMessage
|
199 | }, message), _react["default"].createElement(_Divider["default"], {
|
200 | className: classes.neutralDivider
|
201 | }), _react["default"].createElement(_Typography["default"], {
|
202 | variant: "h1",
|
203 | align: "center",
|
204 | className: classes.neutralSubtitle
|
205 | }, head)) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement("img", {
|
206 | className: classes.banner,
|
207 | src: (_imgUrl = imgUrl) !== null && _imgUrl !== void 0 ? _imgUrl : '/static/img/generic-banner-optim.jpg',
|
208 | alt: ""
|
209 | }), _react["default"].createElement(_Typography["default"], {
|
210 | variant: "h5",
|
211 | align: "center",
|
212 | className: classes.title
|
213 | }, title), subtitle && _react["default"].createElement(_Typography["default"], {
|
214 | variant: "h1",
|
215 | align: "center",
|
216 | className: classes.subtitle
|
217 | }, subtitle))), _react["default"].createElement("form", {
|
218 | className: "".concat(classes.secondPane, " ").concat(classes.pane),
|
219 | "data-test": "login-form",
|
220 | onSubmit: onSubmit
|
221 | }, _react["default"].createElement(_TextField["default"], {
|
222 | className: classes.firstInput,
|
223 | name: "username",
|
224 | placeholder: (0, _i18n.getTranslation)(translations, language, 'email'),
|
225 | InputProps: {
|
226 | startAdornment: _react["default"].createElement(_InputAdornment["default"], {
|
227 | position: "start"
|
228 | }, _react["default"].createElement(_MailOutline["default"], {
|
229 | fontSize: "small"
|
230 | })),
|
231 | classes: {
|
232 | input: classes.loginInput
|
233 | }
|
234 | }
|
235 | }), _react["default"].createElement(_TextField["default"], {
|
236 | name: "password",
|
237 | type: passwordType,
|
238 | placeholder: (0, _i18n.getTranslation)(translations, language, 'password'),
|
239 | InputProps: {
|
240 | startAdornment: _react["default"].createElement(_InputAdornment["default"], {
|
241 | position: "start"
|
242 | }, _react["default"].createElement(_VpnKeyOutlined["default"], {
|
243 | fontSize: "small"
|
244 | })),
|
245 | endAdornment: _react["default"].createElement(_InputAdornment["default"], {
|
246 | position: "end"
|
247 | }, _react["default"].createElement(_IconButton["default"], {
|
248 | className: classes.endAdornment,
|
249 | onClick: function onClick() {
|
250 | setPasswordType((0, _toggle["default"])(passwordType, 'password', 'text'));
|
251 | }
|
252 | }, passwordType === 'password' ? _react["default"].createElement(_VisibilityOutlined["default"], {
|
253 | fontSize: "small"
|
254 | }) : _react["default"].createElement(_VisibilityOffOutlined["default"], {
|
255 | fontSize: "small"
|
256 | }))),
|
257 | classes: {
|
258 | input: classes.loginInput
|
259 | }
|
260 | }
|
261 | }), _react["default"].createElement(_CustomButton["default"], _extends({
|
262 | isLoading: isLoading
|
263 | }, {
|
264 | height: "short",
|
265 | variant: "contained",
|
266 | colorType: isNeutral ? 'secondary' : 'primary',
|
267 | style: {
|
268 | width: 200,
|
269 | marginTop: 50
|
270 | },
|
271 | "data-test": "login-form-submit",
|
272 | type: "submit"
|
273 | }), (0, _i18n.getTranslation)(translations, language, 'logIn'))), _react["default"].createElement("div", {
|
274 | style: {
|
275 | marginTop: 50
|
276 | }
|
277 | }, _react["default"].createElement(_Typography["default"], {
|
278 | variant: "body2",
|
279 | color: "secondary"
|
280 | }, _react["default"].createElement(_Link["default"], {
|
281 | style: {
|
282 | color: 'inherit'
|
283 | },
|
284 | to: forgottenPasswordPath
|
285 | }, (0, _i18n.getTranslation)(translations, language, 'forgotten password'))))));
|
286 | };
|
287 |
|
288 | LoginPageJSX.propTypes = {
|
289 | classes: _propTypes["default"].object.isRequired,
|
290 | title: _propTypes["default"].string.isRequired,
|
291 | subtitle: _propTypes["default"].string.isRequired,
|
292 | onSubmit: _propTypes["default"].func.isRequired,
|
293 | forgottenPasswordPath: _propTypes["default"].string,
|
294 | imgUrl: _propTypes["default"].string,
|
295 | isLoading: _propTypes["default"].bool,
|
296 | storyLanguage: _propTypes["default"].string,
|
297 | style: _propTypes["default"].object,
|
298 | isNeutral: _propTypes["default"].oneOf([false]).isRequired,
|
299 | message: _propTypes["default"].string.isRequired,
|
300 | head: _propTypes["default"].string.isRequired
|
301 | };
|
302 | var LoginPage = (0, _styles.withStyles)(styles)(LoginPageJSX);
|
303 | var _default = LoginPage;
|
304 | exports["default"] = _default; |
\ | No newline at end of file |