@skroz/frontend 0.0.2
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/LICENCE.md +21 -0
- package/dist/auth/Auth.d.ts +8 -0
- package/dist/auth/Auth.js +52 -0
- package/dist/auth/AuthFooterLinks.d.ts +4 -0
- package/dist/auth/AuthFooterLinks.js +26 -0
- package/dist/auth/Forgot.d.ts +7 -0
- package/dist/auth/Forgot.js +68 -0
- package/dist/auth/Login.d.ts +8 -0
- package/dist/auth/Login.js +65 -0
- package/dist/auth/LoginForm.d.ts +6 -0
- package/dist/auth/LoginForm.js +48 -0
- package/dist/auth/RecoverPassword.d.ts +2 -0
- package/dist/auth/RecoverPassword.js +96 -0
- package/dist/auth/Register.d.ts +8 -0
- package/dist/auth/Register.js +68 -0
- package/dist/auth/ResendLinkButton.d.ts +11 -0
- package/dist/auth/ResendLinkButton.js +50 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.js +22 -0
- package/dist/graphql/ForgotPasswordMutation.graphql.d.ts +24 -0
- package/dist/graphql/ForgotPasswordMutation.graphql.js +76 -0
- package/dist/graphql/LoginMutation.graphql.d.ts +26 -0
- package/dist/graphql/LoginMutation.graphql.js +69 -0
- package/dist/graphql/RegisterMutation.graphql.d.ts +26 -0
- package/dist/graphql/RegisterMutation.graphql.js +69 -0
- package/dist/graphql/ResendLinkButtonMutation.graphql.d.ts +25 -0
- package/dist/graphql/ResendLinkButtonMutation.graphql.js +76 -0
- package/dist/graphql/index.d.ts +5 -0
- package/dist/graphql/index.js +16 -0
- package/dist/graphql/recoveryMutation.graphql.d.ts +19 -0
- package/dist/graphql/recoveryMutation.graphql.js +67 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +20 -0
- package/dist/ui/AreYouSure.d.ts +10 -0
- package/dist/ui/AreYouSure.js +43 -0
- package/dist/ui/FormError.d.ts +3 -0
- package/dist/ui/FormError.js +15 -0
- package/dist/ui/FormItem.d.ts +12 -0
- package/dist/ui/FormItem.js +27 -0
- package/dist/ui/H.d.ts +16 -0
- package/dist/ui/H.js +39 -0
- package/dist/ui/Panel.d.ts +16 -0
- package/dist/ui/Panel.js +24 -0
- package/dist/ui/SeoHead.d.ts +13 -0
- package/dist/ui/SeoHead.js +14 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +18 -0
- package/dist/utils/FrontendContext.d.ts +14 -0
- package/dist/utils/FrontendContext.js +30 -0
- package/dist/utils/getError.d.ts +11 -0
- package/dist/utils/getError.js +73 -0
- package/dist/utils/handleFormErrors.d.ts +15 -0
- package/dist/utils/handleFormErrors.js +62 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +28 -0
- package/dist/utils/isObject.d.ts +2 -0
- package/dist/utils/isObject.js +6 -0
- package/dist/utils/limitExpiresAt.d.ts +3 -0
- package/dist/utils/limitExpiresAt.js +19 -0
- package/package.json +48 -0
- package/src/auth/Auth.tsx +76 -0
- package/src/auth/AuthFooterLinks.tsx +27 -0
- package/src/auth/Forgot.tsx +122 -0
- package/src/auth/Login.tsx +115 -0
- package/src/auth/LoginForm.tsx +74 -0
- package/src/auth/RecoverPassword.tsx +185 -0
- package/src/auth/Register.tsx +174 -0
- package/src/auth/ResendLinkButton.tsx +71 -0
- package/src/auth/index.ts +8 -0
- package/src/graphql/ForgotPasswordMutation.graphql.ts +100 -0
- package/src/graphql/LoginMutation.graphql.ts +95 -0
- package/src/graphql/RegisterMutation.graphql.ts +95 -0
- package/src/graphql/ResendLinkButtonMutation.graphql.ts +101 -0
- package/src/graphql/index.ts +5 -0
- package/src/graphql/recoveryMutation.graphql.ts +91 -0
- package/src/index.ts +4 -0
- package/src/locales/ru/common.json +271 -0
- package/src/styles/auth.less +142 -0
- package/src/styles/colors.less +55 -0
- package/src/styles/components.less +2 -0
- package/src/styles/panels.less +61 -0
- package/src/styles/sizes.less +92 -0
- package/src/ui/AreYouSure.tsx +55 -0
- package/src/ui/FormError.tsx +21 -0
- package/src/ui/FormItem.tsx +60 -0
- package/src/ui/H.tsx +76 -0
- package/src/ui/Panel.tsx +44 -0
- package/src/ui/SeoHead.tsx +69 -0
- package/src/ui/index.ts +6 -0
- package/src/utils/FrontendContext.tsx +30 -0
- package/src/utils/getError.ts +101 -0
- package/src/utils/handleFormErrors.ts +77 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/isObject.ts +4 -0
- package/src/utils/limitExpiresAt.ts +14 -0
package/LICENCE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-present, Mikhail Skroznikov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var antd_1 = require("antd");
|
|
19
|
+
var form_1 = require("@os-design/form");
|
|
20
|
+
var router_1 = require("next/router");
|
|
21
|
+
var next_i18next_1 = require("next-i18next");
|
|
22
|
+
var Login_1 = __importDefault(require("./Login"));
|
|
23
|
+
var Register_1 = __importDefault(require("./Register"));
|
|
24
|
+
var Forgot_1 = __importDefault(require("./Forgot"));
|
|
25
|
+
var Auth = function (_a) {
|
|
26
|
+
var authType = _a.authType, setAuthType = _a.setAuthType, onFinish = _a.onFinish;
|
|
27
|
+
var router = (0, router_1.useRouter)();
|
|
28
|
+
var t = (0, next_i18next_1.useTranslation)('common').t;
|
|
29
|
+
// если это отдельная страница восстановления пароля, то он может быть передан в строке
|
|
30
|
+
var initialEmail = router.query.email;
|
|
31
|
+
if (typeof initialEmail !== 'string')
|
|
32
|
+
initialEmail = '';
|
|
33
|
+
var form = (0, form_1.useForm)({
|
|
34
|
+
email: initialEmail || '',
|
|
35
|
+
password: '',
|
|
36
|
+
isPrivacyPolicyAgree: false,
|
|
37
|
+
isUserAgreementAgree: false
|
|
38
|
+
}).form;
|
|
39
|
+
return ((0, jsx_runtime_1.jsxs)(form_1.FormProvider, __assign({ form: form }, { children: [authType !== 'forgot' && ((0, jsx_runtime_1.jsx)(antd_1.Tabs, { activeKey: authType, centered: true, onChange: function (activeKey) { return setAuthType(activeKey); }, className: 'no-text-selection', items: [
|
|
40
|
+
{
|
|
41
|
+
label: t('buttons.login'),
|
|
42
|
+
key: 'login',
|
|
43
|
+
children: ((0, jsx_runtime_1.jsx)(Login_1.default, { isModal: true, onFinish: onFinish, onForgotClick: function () { return setAuthType('forgot'); } })),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: t('buttons.register'),
|
|
47
|
+
key: 'register',
|
|
48
|
+
children: ((0, jsx_runtime_1.jsx)(Register_1.default, { isModal: true, onFinish: onFinish, onForgotClick: function () { return setAuthType('forgot'); } })),
|
|
49
|
+
},
|
|
50
|
+
] })), authType === 'forgot' && ((0, jsx_runtime_1.jsx)(Forgot_1.default, { onFinish: onFinish, onLoginClick: function () { return setAuthType('login'); } }))] })));
|
|
51
|
+
};
|
|
52
|
+
exports.default = Auth;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var next_i18next_1 = require("next-i18next");
|
|
20
|
+
var link_1 = __importDefault(require("next/link"));
|
|
21
|
+
var AuthFooterLinks = function () {
|
|
22
|
+
var t = (0, next_i18next_1.useTranslation)('common').t;
|
|
23
|
+
var docs = ['agency-agreement', 'privacy-policy'];
|
|
24
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-footer-issues' }, { children: [t('auth.agreeLoginLabel'), ' ', docs.map(function (doc, index) { return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: "/docs/".concat(doc), passHref: true, target: '_blank' }, { children: t("docsPage.".concat(doc)) })), index < docs.length - 1 && ', '] }, doc)); }), "."] })));
|
|
25
|
+
};
|
|
26
|
+
exports.default = AuthFooterLinks;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
22
|
+
var react_1 = require("react");
|
|
23
|
+
var antd_1 = require("antd");
|
|
24
|
+
var router_1 = require("next/router");
|
|
25
|
+
var icons_1 = require("@ant-design/icons");
|
|
26
|
+
var next_i18next_1 = require("next-i18next");
|
|
27
|
+
var link_1 = __importDefault(require("next/link"));
|
|
28
|
+
var form_1 = require("@os-design/form");
|
|
29
|
+
var react_relay_1 = require("react-relay");
|
|
30
|
+
var limitExpiresAt_1 = require("../utils/limitExpiresAt");
|
|
31
|
+
var handleFormErrors_1 = __importDefault(require("../utils/handleFormErrors"));
|
|
32
|
+
var H_1 = __importDefault(require("../ui/H"));
|
|
33
|
+
var FrontendContext_1 = require("../utils/FrontendContext");
|
|
34
|
+
var FormItem_1 = __importDefault(require("../ui/FormItem"));
|
|
35
|
+
var Forgot = function (_a) {
|
|
36
|
+
var onFinish = _a.onFinish, onLoginClick = _a.onLoginClick;
|
|
37
|
+
var t = (0, next_i18next_1.useTranslation)().t;
|
|
38
|
+
var router = (0, router_1.useRouter)();
|
|
39
|
+
var config = (0, FrontendContext_1.useFrontendConfig)();
|
|
40
|
+
var _b = (0, form_1.useExistingForm)(), form = _b.form, useValue = _b.useValue, Field = _b.Field;
|
|
41
|
+
var email = useValue('email');
|
|
42
|
+
var _c = (0, react_relay_1.useMutation)((0, react_relay_1.graphql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n mutation ForgotPasswordMutation($input: ForgotPasswordInput!) {\n forgotPassword(input: $input) {\n recoveryLinkIsSent\n limitExpiresAt\n }\n }\n "], ["\n mutation ForgotPasswordMutation($input: ForgotPasswordInput!) {\n forgotPassword(input: $input) {\n recoveryLinkIsSent\n limitExpiresAt\n }\n }\n "])))), commit = _c[0], loading = _c[1];
|
|
43
|
+
var forgotPasswordHandler = (0, react_1.useCallback)(function () {
|
|
44
|
+
commit({
|
|
45
|
+
variables: {
|
|
46
|
+
input: {
|
|
47
|
+
email: email,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
onError: function (error) { return (0, handleFormErrors_1.default)(form, error); },
|
|
51
|
+
onCompleted: function (res) {
|
|
52
|
+
(0, limitExpiresAt_1.setLimitExpiresAt)(res.forgotPassword.limitExpiresAt);
|
|
53
|
+
if (!res.forgotPassword.recoveryLinkIsSent)
|
|
54
|
+
antd_1.message.error(t('common:auth.forgotSendError'));
|
|
55
|
+
router.push("/recovery?email=".concat(email));
|
|
56
|
+
onFinish();
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}, [commit, email, form, onFinish, router, t]);
|
|
60
|
+
var loginButton = ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', onClick: onLoginClick, shape: 'round' }, { children: t('common:buttons.login') })));
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth no-text-selection' }, { children: [(0, jsx_runtime_1.jsx)(H_1.default, __assign({ type: 'h1', textAlign: 'center' }, { children: t('common:auth.forgotTitle') })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-subtitle' }, { children: [t('common:auth.forgotSubtitle'), ' ', onLoginClick ? (loginButton) : ((0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.loginPath || '/login', passHref: true }, { children: loginButton })))] })), (0, jsx_runtime_1.jsx)(antd_1.Form, __assign({ size: 'large' }, { children: (0, jsx_runtime_1.jsx)(Field, { name: 'email', render: function (_a, _b) {
|
|
62
|
+
var value = _a.value, onChange = _a.onChange;
|
|
63
|
+
var error = _b.error;
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ error: error }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { value: value, prefix: (0, jsx_runtime_1.jsx)(icons_1.UserOutlined, {}), onChange: function (e) { return onChange(e.target.value); }, placeholder: 'Email', size: 'large' }) })));
|
|
65
|
+
} }) })), (0, jsx_runtime_1.jsx)("div", __assign({ className: 'auth-button' }, { children: (0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'primary', shape: 'round', size: 'large', loading: loading, onClick: forgotPasswordHandler }, { children: t('common:auth.forgotSendInstructions') })) })), (0, jsx_runtime_1.jsx)("div", __assign({ className: 'auth-footer' }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ className: 'auth-footer-issues' }, { children: t('common:auth.forgotIssues') })) }))] })));
|
|
66
|
+
};
|
|
67
|
+
exports.default = Forgot;
|
|
68
|
+
var templateObject_1;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
22
|
+
var react_1 = require("react");
|
|
23
|
+
var antd_1 = require("antd");
|
|
24
|
+
var router_1 = require("next/router");
|
|
25
|
+
var next_i18next_1 = require("next-i18next");
|
|
26
|
+
var link_1 = __importDefault(require("next/link"));
|
|
27
|
+
var react_relay_1 = require("react-relay");
|
|
28
|
+
var form_1 = require("@os-design/form");
|
|
29
|
+
var handleFormErrors_1 = __importDefault(require("../utils/handleFormErrors"));
|
|
30
|
+
var AuthFooterLinks_1 = __importDefault(require("./AuthFooterLinks"));
|
|
31
|
+
var H_1 = __importDefault(require("../ui/H"));
|
|
32
|
+
var FrontendContext_1 = require("../utils/FrontendContext");
|
|
33
|
+
var LoginForm_1 = __importDefault(require("./LoginForm"));
|
|
34
|
+
var Login = function (_a) {
|
|
35
|
+
var onFinish = _a.onFinish, onForgotClick = _a.onForgotClick, isModal = _a.isModal;
|
|
36
|
+
var t = (0, next_i18next_1.useTranslation)().t;
|
|
37
|
+
var router = (0, router_1.useRouter)();
|
|
38
|
+
var form = (0, form_1.useExistingForm)().form;
|
|
39
|
+
var config = (0, FrontendContext_1.useFrontendConfig)();
|
|
40
|
+
var _b = (0, react_relay_1.useMutation)((0, react_relay_1.graphql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n mutation LoginMutation($input: RegisterInput!) {\n login(input: $input) {\n ok\n }\n }\n "], ["\n mutation LoginMutation($input: RegisterInput!) {\n login(input: $input) {\n ok\n }\n }\n "])))), commit = _b[0], loading = _b[1];
|
|
41
|
+
var loginHandler = (0, react_1.useCallback)(function () {
|
|
42
|
+
commit({
|
|
43
|
+
variables: {
|
|
44
|
+
input: __assign({}, form.values.getAll()),
|
|
45
|
+
},
|
|
46
|
+
onError: function (error) {
|
|
47
|
+
(0, handleFormErrors_1.default)(form, error);
|
|
48
|
+
},
|
|
49
|
+
onCompleted: function (res) {
|
|
50
|
+
if (!res.login.ok) {
|
|
51
|
+
antd_1.message.error(t('common:auth.loginError'));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
onFinish();
|
|
55
|
+
antd_1.message.success(t('common:auth.loginSuccess'));
|
|
56
|
+
router.reload();
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}, [commit, form, router, onFinish, t]);
|
|
60
|
+
var forgotButton = ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', onClick: onForgotClick }, { children: t('common:auth.forgot') })));
|
|
61
|
+
var registerButton = ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', shape: 'round', className: 'register-link' }, { children: t('common:buttons.register') })));
|
|
62
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth no-text-selection' }, { children: [(0, jsx_runtime_1.jsx)(H_1.default, __assign({ type: 'h1', textAlign: 'center' }, { children: t('common:auth.loginTitle') })), !isModal && ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-subtitle' }, { children: [t('common:auth.loginSubtitle'), ' ', (0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.registerPath || '/register', passHref: true }, { children: registerButton }))] }))), (0, jsx_runtime_1.jsx)(LoginForm_1.default, { onPressEnter: loginHandler }), (0, jsx_runtime_1.jsx)("div", __assign({ className: 'auth-button' }, { children: (0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'primary', shape: 'round', size: 'large', loading: loading, onClick: loginHandler }, { children: t('common:buttons.login') })) })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-footer' }, { children: [(0, jsx_runtime_1.jsx)("div", { children: onForgotClick ? (forgotButton) : ((0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.forgotPasswordPath || '/forgot', passHref: true }, { children: forgotButton }))) }), (0, jsx_runtime_1.jsx)(AuthFooterLinks_1.default, {})] }))] })));
|
|
63
|
+
};
|
|
64
|
+
exports.default = Login;
|
|
65
|
+
var templateObject_1;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var antd_1 = require("antd");
|
|
19
|
+
var icons_1 = require("@ant-design/icons");
|
|
20
|
+
var next_i18next_1 = require("next-i18next");
|
|
21
|
+
var form_1 = require("@os-design/form");
|
|
22
|
+
var FormItem_1 = __importDefault(require("../ui/FormItem"));
|
|
23
|
+
var FormError_1 = __importDefault(require("../ui/FormError"));
|
|
24
|
+
var LoginForm = function (_a) {
|
|
25
|
+
var onPressEnter = _a.onPressEnter;
|
|
26
|
+
var t = (0, next_i18next_1.useTranslation)().t;
|
|
27
|
+
var Field = (0, form_1.useExistingForm)().Field;
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(antd_1.Form, __assign({ size: 'large' }, { children: [(0, jsx_runtime_1.jsx)(FormError_1.default, {}), (0, jsx_runtime_1.jsx)(Field, { name: 'email', render: function (_a, _b) {
|
|
29
|
+
var value = _a.value, onChange = _a.onChange;
|
|
30
|
+
var error = _b.error;
|
|
31
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ error: error }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { prefix: (0, jsx_runtime_1.jsx)(icons_1.UserOutlined, {}), value: value, onChange: function (e) {
|
|
32
|
+
return onChange(e.target.value);
|
|
33
|
+
}, onKeyDown: function (e) {
|
|
34
|
+
if (e.key === 'Enter')
|
|
35
|
+
onPressEnter();
|
|
36
|
+
}, placeholder: 'Email' }) })));
|
|
37
|
+
} }), (0, jsx_runtime_1.jsx)(Field, { name: 'password', render: function (_a, _b) {
|
|
38
|
+
var value = _a.value, onChange = _a.onChange;
|
|
39
|
+
var error = _b.error;
|
|
40
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ error: error }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input.Password, { prefix: (0, jsx_runtime_1.jsx)(icons_1.LockOutlined, {}), value: value, onChange: function (e) {
|
|
41
|
+
return onChange(e.target.value);
|
|
42
|
+
}, onKeyDown: function (e) {
|
|
43
|
+
if (e.key === 'Enter')
|
|
44
|
+
onPressEnter();
|
|
45
|
+
}, placeholder: t('common:auth.passwordPlaceholder') }) })));
|
|
46
|
+
} })] })));
|
|
47
|
+
};
|
|
48
|
+
exports.default = LoginForm;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
22
|
+
var antd_1 = require("antd");
|
|
23
|
+
var react_1 = require("react");
|
|
24
|
+
var router_1 = require("next/router");
|
|
25
|
+
var next_i18next_1 = require("next-i18next");
|
|
26
|
+
var form_1 = require("@os-design/form");
|
|
27
|
+
var react_relay_1 = require("react-relay");
|
|
28
|
+
var link_1 = __importDefault(require("next/link"));
|
|
29
|
+
var use_interval_1 = __importDefault(require("@os-design/use-interval"));
|
|
30
|
+
var handleFormErrors_1 = __importDefault(require("../utils/handleFormErrors"));
|
|
31
|
+
var FrontendContext_1 = require("../utils/FrontendContext");
|
|
32
|
+
var H_1 = __importDefault(require("../ui/H"));
|
|
33
|
+
var Panel_1 = __importDefault(require("../ui/Panel"));
|
|
34
|
+
var FormItem_1 = __importDefault(require("../ui/FormItem"));
|
|
35
|
+
var FormError_1 = __importDefault(require("../ui/FormError"));
|
|
36
|
+
var ResendLinkButton_1 = __importDefault(require("./ResendLinkButton"));
|
|
37
|
+
var limitExpiresAt_1 = require("../utils/limitExpiresAt");
|
|
38
|
+
var RecoverPassword = function () {
|
|
39
|
+
var router = (0, router_1.useRouter)();
|
|
40
|
+
var t = (0, next_i18next_1.useTranslation)(['common']).t;
|
|
41
|
+
var config = (0, FrontendContext_1.useFrontendConfig)();
|
|
42
|
+
var email = router.query.email;
|
|
43
|
+
if (typeof email !== 'string' || !email)
|
|
44
|
+
email = '';
|
|
45
|
+
var _a = (0, form_1.useForm)({
|
|
46
|
+
token: '',
|
|
47
|
+
password: '',
|
|
48
|
+
}), form = _a.form, Field = _a.Field;
|
|
49
|
+
var _b = (0, react_relay_1.useMutation)((0, react_relay_1.graphql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n mutation recoveryMutation($input: RecoverPasswordInput!) {\n recoverPassword(input: $input) {\n ok\n }\n }\n "], ["\n mutation recoveryMutation($input: RecoverPasswordInput!) {\n recoverPassword(input: $input) {\n ok\n }\n }\n "])))), commit = _b[0], loading = _b[1];
|
|
50
|
+
var recoverPasswordHandler = (0, react_1.useCallback)(function () {
|
|
51
|
+
commit({
|
|
52
|
+
variables: {
|
|
53
|
+
input: __assign({}, form.values.getAll()),
|
|
54
|
+
},
|
|
55
|
+
onError: function (error) { return (0, handleFormErrors_1.default)(form, error); },
|
|
56
|
+
onCompleted: function () {
|
|
57
|
+
antd_1.message.success(t('common:auth.recoverySuccess'));
|
|
58
|
+
var profilePath = config.defaultPath
|
|
59
|
+
? "".concat(config.defaultPath === '/' ? '' : config.defaultPath, "/profile")
|
|
60
|
+
: '/profile';
|
|
61
|
+
router.push(profilePath);
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}, [commit, form, router, t, config.defaultPath]);
|
|
65
|
+
var _c = (0, react_1.useState)(0), limitExpiresIn = _c[0], setLimitExpiresIn = _c[1];
|
|
66
|
+
// Update limitExpiresIn
|
|
67
|
+
var updateLimitExpiresIn = (0, react_1.useCallback)(function () { return setLimitExpiresIn((0, limitExpiresAt_1.getLimitExpiresIn)()); }, []);
|
|
68
|
+
(0, react_1.useEffect)(updateLimitExpiresIn, [updateLimitExpiresIn]); // Initial update
|
|
69
|
+
(0, use_interval_1.default)(updateLimitExpiresIn, limitExpiresIn > 0 ? 1000 : null); // Update every second
|
|
70
|
+
var resendIsDenied = limitExpiresIn > 0;
|
|
71
|
+
var getResendButtonTitle = function () {
|
|
72
|
+
if (resendIsDenied) {
|
|
73
|
+
return "".concat(t('common:auth.openEmailResendDenied'), " ").concat(Math.ceil(limitExpiresIn / 1000), " ").concat(t('common:sec'));
|
|
74
|
+
}
|
|
75
|
+
return t('common:auth.openEmailResend');
|
|
76
|
+
};
|
|
77
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'recovery' }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ className: 'recovery-header' }, { children: t('common:auth.setNewPassword') })), email.length > 0 ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ style: { color: 'red', marginBottom: 15 } }, { children: t('common:auth.findCodeOnEmail') })), (0, jsx_runtime_1.jsx)(form_1.FormProvider, __assign({ form: form }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Form, __assign({ layout: 'vertical', size: 'large' }, { children: [(0, jsx_runtime_1.jsx)(FormError_1.default, {}), (0, jsx_runtime_1.jsx)(Field, { name: 'token', render: function (_a, _b) {
|
|
78
|
+
var value = _a.value, onChange = _a.onChange;
|
|
79
|
+
var error = _b.error;
|
|
80
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ label: '\u041A\u043E\u0434 \u0438\u0437 \u043F\u0438\u0441\u044C\u043C\u0430', error: error, style: { marginBottom: 0 } }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: '------', value: value, onChange: function (e) { return onChange(e.target.value); } }) })));
|
|
81
|
+
} }), (0, jsx_runtime_1.jsx)("div", __assign({ style: { marginBottom: 25 } }, { children: (0, jsx_runtime_1.jsx)(ResendLinkButton_1.default, __assign({ email: email, type: 'recovery', disabled: resendIsDenied, onError: function (error) { return (0, handleFormErrors_1.default)(form, error); }, onCompleted: function (res) {
|
|
82
|
+
(0, limitExpiresAt_1.setLimitExpiresAt)(res.resendLink.limitExpiresAt);
|
|
83
|
+
setLimitExpiresIn((0, limitExpiresAt_1.getLimitExpiresIn)());
|
|
84
|
+
// Отображаем сообщение
|
|
85
|
+
if (res.resendLink.ok)
|
|
86
|
+
antd_1.message.success(t('common:auth.openEmailResendOk'));
|
|
87
|
+
else
|
|
88
|
+
antd_1.message.error(t('common:auth.openEmailResendError'));
|
|
89
|
+
} }, { children: getResendButtonTitle() })) })), (0, jsx_runtime_1.jsxs)(Panel_1.default, __assign({ bg: 'secondary' }, { children: [(0, jsx_runtime_1.jsx)(Field, { name: 'password', render: function (_a, _b) {
|
|
90
|
+
var value = _a.value, onChange = _a.onChange;
|
|
91
|
+
var error = _b.error;
|
|
92
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ label: t('common:auth.setNewPassword'), error: error }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input.Password, { value: value, onChange: function (e) { return onChange(e.target.value); }, placeholder: t('common:auth.newPassword') }) })));
|
|
93
|
+
} }), (0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ loading: loading, onClick: recoverPasswordHandler, type: 'primary' }, { children: t('common:auth.saveNewPassword') }))] }))] })) }))] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(H_1.default, __assign({ type: 'h2', subHeader: '\u0412\u044B \u043F\u0435\u0440\u0435\u0448\u043B\u0438 \u043D\u0430 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0441 \u043D\u0435\u0432\u0435\u0440\u043D\u044B\u043C\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430\u043C\u0438, \u0432\u0435\u0440\u043D\u0438\u0442\u0435\u0441\u044C \u043D\u0430\u0437\u0430\u0434, \u0447\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043E\u0448\u0438\u0431\u043A\u0443', textAlign: 'center' }, { children: "\u041E\u0448\u0438\u0431\u043E\u0447\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B" })), (0, jsx_runtime_1.jsx)("div", __assign({ style: { textAlign: 'center' } }, { children: (0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.forgotPasswordPath || '/forgot' }, { children: (0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'primary', shape: 'round', size: 'large' }, { children: "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434" })) })) }))] }))] })));
|
|
94
|
+
};
|
|
95
|
+
exports.default = RecoverPassword;
|
|
96
|
+
var templateObject_1;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
22
|
+
var react_1 = require("react");
|
|
23
|
+
var antd_1 = require("antd");
|
|
24
|
+
var router_1 = require("next/router");
|
|
25
|
+
var next_i18next_1 = require("next-i18next");
|
|
26
|
+
var link_1 = __importDefault(require("next/link"));
|
|
27
|
+
var form_1 = require("@os-design/form");
|
|
28
|
+
var react_relay_1 = require("react-relay");
|
|
29
|
+
var handleFormErrors_1 = __importDefault(require("../utils/handleFormErrors"));
|
|
30
|
+
var AuthFooterLinks_1 = __importDefault(require("./AuthFooterLinks"));
|
|
31
|
+
var H_1 = __importDefault(require("../ui/H"));
|
|
32
|
+
var FrontendContext_1 = require("../utils/FrontendContext");
|
|
33
|
+
var LoginForm_1 = __importDefault(require("./LoginForm"));
|
|
34
|
+
var FormItem_1 = __importDefault(require("../ui/FormItem"));
|
|
35
|
+
var Register = function (_a) {
|
|
36
|
+
var onFinish = _a.onFinish, isModal = _a.isModal, onForgotClick = _a.onForgotClick;
|
|
37
|
+
var t = (0, next_i18next_1.useTranslation)().t;
|
|
38
|
+
var router = (0, router_1.useRouter)();
|
|
39
|
+
var config = (0, FrontendContext_1.useFrontendConfig)();
|
|
40
|
+
var _b = (0, form_1.useExistingForm)(), form = _b.form, Field = _b.Field;
|
|
41
|
+
var _c = (0, react_relay_1.useMutation)((0, react_relay_1.graphql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n mutation RegisterMutation($input: RegisterInput!) {\n register(input: $input) {\n ok\n }\n }\n "], ["\n mutation RegisterMutation($input: RegisterInput!) {\n register(input: $input) {\n ok\n }\n }\n "])))), commit = _c[0], loading = _c[1];
|
|
42
|
+
var registerHandler = (0, react_1.useCallback)(function () {
|
|
43
|
+
commit({
|
|
44
|
+
variables: {
|
|
45
|
+
input: __assign({}, form.values.getAll()),
|
|
46
|
+
},
|
|
47
|
+
onError: function (error) { return (0, handleFormErrors_1.default)(form, error); },
|
|
48
|
+
onCompleted: function () {
|
|
49
|
+
onFinish();
|
|
50
|
+
router.push(config.defaultPath || '/');
|
|
51
|
+
antd_1.message.success(t('common:auth.successRegister'));
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}, [commit, form, onFinish, router, t, config.defaultPath]);
|
|
55
|
+
var forgotButton = ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', onClick: onForgotClick }, { children: t('common:auth.forgot') })));
|
|
56
|
+
var loginButton = ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', shape: 'round' }, { children: t('common:buttons.login') })));
|
|
57
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth no-text-selection' }, { children: [(0, jsx_runtime_1.jsx)(H_1.default, __assign({ type: 'h1', textAlign: 'center' }, { children: t('common:auth.registerTitle') })), !isModal && ((0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-subtitle' }, { children: [t('common:auth.registerSubtitle'), ' ', (0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.loginPath || '/login', passHref: true }, { children: loginButton }))] }))), (0, jsx_runtime_1.jsx)(LoginForm_1.default, { onPressEnter: registerHandler }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Field, { name: 'isUserAgreementAgree', render: function (_a, _b) {
|
|
58
|
+
var value = _a.value, onChange = _a.onChange;
|
|
59
|
+
var error = _b.error;
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ error: error, style: { marginBottom: 0 } }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Checkbox, __assign({ style: { fontSize: '16px' }, checked: value || false, onChange: function (e) { return onChange(e.target.checked); } }, { children: [t('common:auth.acceptUserAgreement'), ' ', (0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: '/docs/user-agreement' }, { children: t('common:links.userAgreement') }))] })) })));
|
|
61
|
+
} }), (0, jsx_runtime_1.jsx)(Field, { name: 'isPrivacyPolicyAgree', render: function (_a, _b) {
|
|
62
|
+
var value = _a.value, onChange = _a.onChange;
|
|
63
|
+
var error = _b.error;
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(FormItem_1.default, __assign({ error: error }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Checkbox, __assign({ checked: value || false, onChange: function (e) { return onChange(e.target.checked); }, style: { fontSize: '16px' } }, { children: [t('common:auth.acceptPrivacyPolicy'), ' ', (0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: '/docs/privacy-policy' }, { children: t('common:links.privacyPolicy') }))] })) })));
|
|
65
|
+
} })] }), (0, jsx_runtime_1.jsx)("div", __assign({ className: 'auth-button' }, { children: (0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'primary', shape: 'round', size: 'large', loading: loading, onClick: registerHandler }, { children: t('common:buttons.register') })) })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: 'auth-footer' }, { children: [(0, jsx_runtime_1.jsx)("div", { children: onForgotClick ? (forgotButton) : ((0, jsx_runtime_1.jsx)(link_1.default, __assign({ href: config.forgotPasswordPath || '/forgot', passHref: true }, { children: forgotButton }))) }), (0, jsx_runtime_1.jsx)(AuthFooterLinks_1.default, {})] }))] })));
|
|
66
|
+
};
|
|
67
|
+
exports.default = Register;
|
|
68
|
+
var templateObject_1;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ResendLinkButtonProps {
|
|
3
|
+
type: string;
|
|
4
|
+
email: string;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
onCompleted: (res: any) => void;
|
|
8
|
+
onError: (res: any) => void;
|
|
9
|
+
}
|
|
10
|
+
declare const ResendLinkButton: React.FC<ResendLinkButtonProps>;
|
|
11
|
+
export default ResendLinkButton;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
|
+
var react_1 = require("react");
|
|
20
|
+
var react_relay_1 = require("react-relay");
|
|
21
|
+
var antd_1 = require("antd");
|
|
22
|
+
var next_i18next_1 = require("next-i18next");
|
|
23
|
+
var ResendLinkButton = function (_a) {
|
|
24
|
+
var type = _a.type, email = _a.email, children = _a.children, disabled = _a.disabled, onCompleted = _a.onCompleted, onError = _a.onError;
|
|
25
|
+
var t = (0, next_i18next_1.useTranslation)().t;
|
|
26
|
+
var _b = (0, react_relay_1.useMutation)((0, react_relay_1.graphql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n mutation ResendLinkButtonMutation($input: ResendLinkInput!) {\n resendLink(input: $input) {\n ok\n limitExpiresAt\n }\n }\n "], ["\n mutation ResendLinkButtonMutation($input: ResendLinkInput!) {\n resendLink(input: $input) {\n ok\n limitExpiresAt\n }\n }\n "])))), commit = _b[0], loading = _b[1];
|
|
27
|
+
var resendLinkHandler = (0, react_1.useCallback)(function () {
|
|
28
|
+
if (!email) {
|
|
29
|
+
antd_1.message.error(t('error.emailNotProvided'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (!type) {
|
|
33
|
+
antd_1.message.error(t('error.typeNotProvided'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
commit({
|
|
37
|
+
variables: {
|
|
38
|
+
input: {
|
|
39
|
+
email: email,
|
|
40
|
+
type: type,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
onError: onError,
|
|
44
|
+
onCompleted: onCompleted,
|
|
45
|
+
});
|
|
46
|
+
}, [commit, email, onCompleted, onError, t, type]);
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)(antd_1.Button, __assign({ type: 'link', disabled: disabled, onClick: resendLinkHandler, loading: loading, size: 'large' }, { children: children })));
|
|
48
|
+
};
|
|
49
|
+
exports.default = ResendLinkButton;
|
|
50
|
+
var templateObject_1;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default as Auth } from './Auth';
|
|
2
|
+
export { default as Login } from './Login';
|
|
3
|
+
export { default as Register } from './Register';
|
|
4
|
+
export { default as Forgot } from './Forgot';
|
|
5
|
+
export { default as RecoverPassword } from './RecoverPassword';
|
|
6
|
+
export { default as AuthFooterLinks } from './AuthFooterLinks';
|
|
7
|
+
export { default as LoginForm } from './LoginForm';
|
|
8
|
+
export { default as ResendLinkButton } from './ResendLinkButton';
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
exports.ResendLinkButton = exports.LoginForm = exports.AuthFooterLinks = exports.RecoverPassword = exports.Forgot = exports.Register = exports.Login = exports.Auth = void 0;
|
|
7
|
+
var Auth_1 = require("./Auth");
|
|
8
|
+
Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return __importDefault(Auth_1).default; } });
|
|
9
|
+
var Login_1 = require("./Login");
|
|
10
|
+
Object.defineProperty(exports, "Login", { enumerable: true, get: function () { return __importDefault(Login_1).default; } });
|
|
11
|
+
var Register_1 = require("./Register");
|
|
12
|
+
Object.defineProperty(exports, "Register", { enumerable: true, get: function () { return __importDefault(Register_1).default; } });
|
|
13
|
+
var Forgot_1 = require("./Forgot");
|
|
14
|
+
Object.defineProperty(exports, "Forgot", { enumerable: true, get: function () { return __importDefault(Forgot_1).default; } });
|
|
15
|
+
var RecoverPassword_1 = require("./RecoverPassword");
|
|
16
|
+
Object.defineProperty(exports, "RecoverPassword", { enumerable: true, get: function () { return __importDefault(RecoverPassword_1).default; } });
|
|
17
|
+
var AuthFooterLinks_1 = require("./AuthFooterLinks");
|
|
18
|
+
Object.defineProperty(exports, "AuthFooterLinks", { enumerable: true, get: function () { return __importDefault(AuthFooterLinks_1).default; } });
|
|
19
|
+
var LoginForm_1 = require("./LoginForm");
|
|
20
|
+
Object.defineProperty(exports, "LoginForm", { enumerable: true, get: function () { return __importDefault(LoginForm_1).default; } });
|
|
21
|
+
var ResendLinkButton_1 = require("./ResendLinkButton");
|
|
22
|
+
Object.defineProperty(exports, "ResendLinkButton", { enumerable: true, get: function () { return __importDefault(ResendLinkButton_1).default; } });
|