UNPKG

10.8 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports["default"] = void 0;
7
8var _react = _interopRequireWildcard(require("react"));
9
10var _Divider = _interopRequireDefault(require("@material-ui/core/Divider"));
11
12var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
13
14var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
15
16var _styles = require("@material-ui/core/styles");
17
18var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
19
20var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
21
22var _MailOutline = _interopRequireDefault(require("@material-ui/icons/MailOutline"));
23
24var _VisibilityOffOutlined = _interopRequireDefault(require("@material-ui/icons/VisibilityOffOutlined"));
25
26var _VisibilityOutlined = _interopRequireDefault(require("@material-ui/icons/VisibilityOutlined"));
27
28var _VpnKeyOutlined = _interopRequireDefault(require("@material-ui/icons/VpnKeyOutlined"));
29
30var _Link = _interopRequireDefault(require("react-router-dom/Link"));
31
32var _Page = _interopRequireDefault(require("sharyn/components/Page"));
33
34var _toggle = _interopRequireDefault(require("sharyn/util/toggle"));
35
36var _i18n = require("../i18n");
37
38var _CustomButton = _interopRequireDefault(require("./CustomButton"));
39
40var _propTypes = _interopRequireDefault(require("prop-types"));
41
42function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
43
44function _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
46function _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
48function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
49
50function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
51
52function _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
54function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
55
56var 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
128var 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};
155var configLanguage = (0, _i18n.getLanguage)();
156
157var 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
288LoginPageJSX.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};
302var LoginPage = (0, _styles.withStyles)(styles)(LoginPageJSX);
303var _default = LoginPage;
304exports["default"] = _default;
\No newline at end of file