@redneckz/wildless-cms-uni-blocks 0.14.872 → 0.14.873

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.
Files changed (33) hide show
  1. package/bundle/bundle.umd.js +31 -2
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  4. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +14 -1
  5. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  6. package/dist/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  7. package/dist/retail/components/NoConsentDialog/NoConsentDialog.js +27 -0
  8. package/dist/retail/components/NoConsentDialog/NoConsentDialog.js.map +1 -0
  9. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +14 -1
  10. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  11. package/lib/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  12. package/lib/retail/components/NoConsentDialog/NoConsentDialog.fixture.d.ts +5 -0
  13. package/lib/retail/components/NoConsentDialog/NoConsentDialog.js +25 -0
  14. package/lib/retail/components/NoConsentDialog/NoConsentDialog.js.map +1 -0
  15. package/mobile/bundle/bundle.umd.js +31 -2
  16. package/mobile/bundle/bundle.umd.min.js +1 -1
  17. package/mobile/bundle/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  18. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +14 -1
  19. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  20. package/mobile/dist/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  21. package/mobile/dist/retail/components/NoConsentDialog/NoConsentDialog.js +27 -0
  22. package/mobile/dist/retail/components/NoConsentDialog/NoConsentDialog.js.map +1 -0
  23. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +14 -1
  24. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  25. package/mobile/lib/retail/components/NoConsentDialog/NoConsentDialog.d.ts +6 -0
  26. package/mobile/lib/retail/components/NoConsentDialog/NoConsentDialog.js +25 -0
  27. package/mobile/lib/retail/components/NoConsentDialog/NoConsentDialog.js.map +1 -0
  28. package/mobile/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +16 -1
  29. package/mobile/src/retail/components/NoConsentDialog/NoConsentDialog.tsx +55 -0
  30. package/package.json +1 -1
  31. package/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +16 -1
  32. package/src/retail/components/NoConsentDialog/NoConsentDialog.fixture.tsx +7 -0
  33. package/src/retail/components/NoConsentDialog/NoConsentDialog.tsx +55 -0
@@ -0,0 +1,6 @@
1
+ import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export interface NoConsentDialogProps extends OnCloseProps {
3
+ attempts: number;
4
+ onSubmit?: (confirmStatus: string) => void;
5
+ }
6
+ export declare const NoConsentDialog: import("@redneckz/uni-jsx").UNIComponent<NoConsentDialogProps, any, any>;
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
5
5
  const uni_jsx_1 = require("@redneckz/uni-jsx");
6
6
  const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
7
7
  const useForm_1 = require("../../hooks/useForm/useForm");
8
+ const NoConsentDialog_1 = require("../../retail/components/NoConsentDialog/NoConsentDialog");
8
9
  const getLimitedBirthdayValidation_1 = require("../../retail/validator/getLimitedBirthdayValidation");
9
10
  const validatorObj_1 = require("../../retail/validator/validatorObj");
10
11
  const ApplicationFormLayout_1 = require("../../ui-kit/ApplicationFormLayout/ApplicationFormLayout");
@@ -25,9 +26,11 @@ const useApplicationLeadApi_1 = require("./useApplicationLeadApi");
25
26
  const useInitApplicationLead_1 = require("./useInitApplicationLead");
26
27
  exports.ApplicationLeadForm = (0, uni_jsx_1.JSX)(({ className, title, programId = '', nextStepLink = '/credit-lead', button, productType = 'credit', data, ...rest }) => {
27
28
  const [esiaStatus, setEsiaStatus] = (0, hooks_1.useState)();
29
+ const [attemptsWithoutConsents, setAttemptsWithoutConsents] = (0, hooks_1.useState)(0);
28
30
  const leadForm = (0, hooks_1.useRef)(null);
29
31
  const applicationFormData = (0, hooks_1.useMemo)(() => (0, applicationFormData_1.getApplicationFormData)(productType), [productType]);
30
32
  const inputs = (0, hooks_1.useMemo)(() => getInputs(applicationFormData), [applicationFormData]);
33
+ const noConsentDialog = (0, useDialog_1.useDialog)(NoConsentDialog_1.NoConsentDialog);
31
34
  const extendedValidatorObj = (0, hooks_1.useMemo)(() => getExtendedValidatorObj(productType), [productType]);
32
35
  const formValidator = (0, hooks_1.useMemo)(() => (0, getObjectValidator_1.getFormValidator)(inputs, extendedValidatorObj), [inputs, extendedValidatorObj]);
33
36
  const initialFormState = (0, useInitApplicationLead_1.useInitApplicationLead)({
@@ -47,6 +50,16 @@ exports.ApplicationLeadForm = (0, uni_jsx_1.JSX)(({ className, title, programId
47
50
  formValidator,
48
51
  onSubmit: handleSubmit,
49
52
  });
53
+ const onSubmitWithPrecondition = (ev) => {
54
+ if (!field('processPersonalDataFlg')?.value) {
55
+ setAttemptsWithoutConsents((prev) => prev + 1);
56
+ attemptsWithoutConsents > 0 &&
57
+ noConsentDialog.open({
58
+ attempts: attemptsWithoutConsents,
59
+ });
60
+ }
61
+ onSubmit?.(ev);
62
+ };
50
63
  const responseTypeDialog = (0, useDialog_1.useDialog)(ResponseTypeDialog_1.ResponseTypeDialog);
51
64
  (0, hooks_1.useEffect)(() => {
52
65
  if (ok !== undefined) {
@@ -63,7 +76,7 @@ exports.ApplicationLeadForm = (0, uni_jsx_1.JSX)(({ className, title, programId
63
76
  reset();
64
77
  }
65
78
  }, [leadForm?.current, esiaStatus]);
66
- return ((0, jsx_runtime_1.jsxs)(ApplicationFormLayout_1.ApplicationFormLayout, { className: (0, style_1.style)('container space-y-m', className), title: title, ...rest, children: [!esiaStatus ? (0, jsx_runtime_1.jsx)(EsiaLoginBanner_1.EsiaLoginBanner, { onChangeEsiaStatus: setEsiaStatus }) : null, (0, jsx_runtime_1.jsxs)("form", { onSubmit: onSubmit, className: "space-y-m relative", ref: leadForm, children: [esiaStatus === ApplicationLeadFormContent_1.EsiaStatuses.Pending ? (0, jsx_runtime_1.jsx)(Loader_1.Loader, { blur: false }) : null, applicationFormData.map((_, i) => ((0, jsx_runtime_1.jsxs)("div", { className: (0, style_1.style)((0, inputColumnStyle_1.inputColumnStyles)(_.columns), 'grid gap-x-m'), children: [(0, renderTitle_1.renderTitle)(_.title), (0, renderInputs_1.renderInputs)({ field, inputs: _?.inputs }, productType)] }, `section-${i}`))), (0, renderSubmitButton_1.renderSubmitButton)(button, isSending), esiaStatus === ApplicationLeadFormContent_1.EsiaStatuses.Error ? ((0, jsx_runtime_1.jsx)(Text_1.Text, { size: "text-m", font: "font-medium", color: "text-error", children: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0413\u043E\u0441\u0443\u0441\u043B\u0443\u0433\u0438 \u0434\u043B\u044F \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u044F\u0432\u043A\u0438 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043F\u043E\u043B\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E." })) : null] })] }));
79
+ return ((0, jsx_runtime_1.jsxs)(ApplicationFormLayout_1.ApplicationFormLayout, { className: (0, style_1.style)('container space-y-m', className), title: title, ...rest, children: [!esiaStatus ? (0, jsx_runtime_1.jsx)(EsiaLoginBanner_1.EsiaLoginBanner, { onChangeEsiaStatus: setEsiaStatus }) : null, (0, jsx_runtime_1.jsxs)("form", { onSubmit: onSubmitWithPrecondition, className: "space-y-m relative", ref: leadForm, children: [esiaStatus === ApplicationLeadFormContent_1.EsiaStatuses.Pending ? (0, jsx_runtime_1.jsx)(Loader_1.Loader, { blur: false }) : null, applicationFormData.map((_, i) => ((0, jsx_runtime_1.jsxs)("div", { className: (0, style_1.style)((0, inputColumnStyle_1.inputColumnStyles)(_.columns), 'grid gap-x-m'), children: [(0, renderTitle_1.renderTitle)(_.title), (0, renderInputs_1.renderInputs)({ field, inputs: _?.inputs }, productType)] }, `section-${i}`))), (0, renderSubmitButton_1.renderSubmitButton)(button, isSending), esiaStatus === ApplicationLeadFormContent_1.EsiaStatuses.Error ? ((0, jsx_runtime_1.jsx)(Text_1.Text, { size: "text-m", font: "font-medium", color: "text-error", children: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0413\u043E\u0441\u0443\u0441\u043B\u0443\u0433\u0438 \u0434\u043B\u044F \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u044F\u0432\u043A\u0438 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043F\u043E\u043B\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E." })) : null] })] }));
67
80
  });
68
81
  const getInputs = (applicationFormData) => (applicationFormData?.flatMap((_) => _?.inputs) || []);
69
82
  const getExtendedValidatorObj = (productType) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationLeadForm.js","sourceRoot":"","sources":["../../../src/components/ApplicationLeadForm/ApplicationLeadForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationLeadForm.js","sourceRoot":"","sources":["../../../src/components/ApplicationLeadForm/ApplicationLeadForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export interface NoConsentDialogProps extends OnCloseProps {
3
+ attempts: number;
4
+ onSubmit?: (confirmStatus: string) => void;
5
+ }
6
+ export declare const NoConsentDialog: import("@redneckz/uni-jsx").UNIComponent<NoConsentDialogProps, any, any>;
@@ -0,0 +1,27 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.NoConsentDialog = void 0;
3
+ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
+ const uni_jsx_1 = require("@redneckz/uni-jsx");
5
+ const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
6
+ const locationNavigator_1 = require("../../../external/locationNavigator");
7
+ const Button_1 = require("../../../ui-kit/Button/Button");
8
+ const Dialog_1 = require("../../../ui-kit/DialogManager/Dialog");
9
+ const Paragraph_1 = require("../../../ui-kit/Paragraph/Paragraph");
10
+ const noop_1 = require("../../../utils/noop");
11
+ exports.NoConsentDialog = (0, uni_jsx_1.JSX)(({ attempts, onClose = noop_1.noop }) => {
12
+ const navigator = (0, locationNavigator_1.locationNavigator)();
13
+ const isMaxAttempts = attempts > 1;
14
+ const returnToMainPage = (0, hooks_1.useCallback)(() => {
15
+ navigator.assign('/natural');
16
+ }, []);
17
+ const handleClose = (0, hooks_1.useCallback)(() => {
18
+ if (isMaxAttempts) {
19
+ returnToMainPage();
20
+ }
21
+ else {
22
+ onClose();
23
+ }
24
+ }, [isMaxAttempts]);
25
+ return ((0, jsx_runtime_1.jsx)(Dialog_1.Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg px-5xl", onClose: handleClose, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-xl items-center", children: [(0, jsx_runtime_1.jsx)(Paragraph_1.Paragraph, { align: "text-center", children: "\u0423\u0432\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043A\u043B\u0438\u0435\u043D\u0442!" }), (0, jsx_runtime_1.jsx)(Paragraph_1.Paragraph, { align: "text-center", children: "\u0414\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043A\u0440\u0435\u0434\u0438\u0442\u0430 \u0412\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u0432 \u043E\u0444\u0438\u0441 \u0411\u0430\u043D\u043A\u0430" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col sm:flex-row gap-xl items-center", children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { type: "button", version: "secondary", onClick: returnToMainPage, children: "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C" }), isMaxAttempts ? null : ((0, jsx_runtime_1.jsx)(Button_1.Button, { type: "button", onClick: onClose, children: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C" }))] })] }) }));
26
+ });
27
+ //# sourceMappingURL=NoConsentDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoConsentDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/NoConsentDialog/NoConsentDialog.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAA0D;AAG1D,2EAAwE;AACxE,0DAAuD;AACvD,iEAA8D;AAC9D,mEAAgE;AAChE,8CAA2C;AAO9B,QAAA,eAAe,GAAG,IAAA,aAAG,EAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,WAAI,EAAE,EAAE,EAAE;IACxF,MAAM,SAAS,GAAG,IAAA,qCAAiB,GAAE,CAAC;IACtC,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACxC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACnC,IAAI,aAAa,EAAE;YACjB,gBAAgB,EAAE,CAAC;SACpB;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,uBAAC,eAAM,IACL,SAAS,EAAC,6DAA6D,EACvE,OAAO,EAAE,WAAW,YAEpB,iCAAK,SAAS,EAAC,mCAAmC,aAChD,uBAAC,qBAAS,IAAC,KAAK,EAAC,aAAa,6GAA8B,EAC5D,uBAAC,qBAAS,IAAC,KAAK,EAAC,aAAa,iVAElB,EACZ,iCAAK,SAAS,EAAC,+CAA+C,aAC5D,uBAAC,eAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,gBAAgB,uEAE1D,EACR,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,uBAAC,eAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,6EAE7B,CACV,IACG,IACF,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
3
3
  import { JSX } from '@redneckz/uni-jsx';
4
4
  import { useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
5
5
  import { useForm } from '../../hooks/useForm/useForm.js';
6
+ import { NoConsentDialog } from '../../retail/components/NoConsentDialog/NoConsentDialog.js';
6
7
  import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation.js';
7
8
  import { validatorObj } from '../../retail/validator/validatorObj.js';
8
9
  import { ApplicationFormLayout } from '../../ui-kit/ApplicationFormLayout/ApplicationFormLayout.js';
@@ -23,9 +24,11 @@ import { useApplicationLeadApi } from './useApplicationLeadApi.js';
23
24
  import { useInitApplicationLead } from './useInitApplicationLead.js';
24
25
  export const ApplicationLeadForm = JSX(({ className, title, programId = '', nextStepLink = '/credit-lead', button, productType = 'credit', data, ...rest }) => {
25
26
  const [esiaStatus, setEsiaStatus] = useState();
27
+ const [attemptsWithoutConsents, setAttemptsWithoutConsents] = useState(0);
26
28
  const leadForm = useRef(null);
27
29
  const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
28
30
  const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
31
+ const noConsentDialog = useDialog(NoConsentDialog);
29
32
  const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
30
33
  const formValidator = useMemo(() => getFormValidator(inputs, extendedValidatorObj), [inputs, extendedValidatorObj]);
31
34
  const initialFormState = useInitApplicationLead({
@@ -45,6 +48,16 @@ export const ApplicationLeadForm = JSX(({ className, title, programId = '', next
45
48
  formValidator,
46
49
  onSubmit: handleSubmit,
47
50
  });
51
+ const onSubmitWithPrecondition = (ev) => {
52
+ if (!field('processPersonalDataFlg')?.value) {
53
+ setAttemptsWithoutConsents((prev) => prev + 1);
54
+ attemptsWithoutConsents > 0 &&
55
+ noConsentDialog.open({
56
+ attempts: attemptsWithoutConsents,
57
+ });
58
+ }
59
+ onSubmit?.(ev);
60
+ };
48
61
  const responseTypeDialog = useDialog(ResponseTypeDialog);
49
62
  useEffect(() => {
50
63
  if (ok !== undefined) {
@@ -61,7 +74,7 @@ export const ApplicationLeadForm = JSX(({ className, title, programId = '', next
61
74
  reset();
62
75
  }
63
76
  }, [leadForm?.current, esiaStatus]);
64
- return (_jsxs(ApplicationFormLayout, { className: style('container space-y-m', className), title: title, ...rest, children: [!esiaStatus ? _jsx(EsiaLoginBanner, { onChangeEsiaStatus: setEsiaStatus }) : null, _jsxs("form", { onSubmit: onSubmit, className: "space-y-m relative", ref: leadForm, children: [esiaStatus === EsiaStatuses.Pending ? _jsx(Loader, { blur: false }) : null, applicationFormData.map((_, i) => (_jsxs("div", { className: style(inputColumnStyles(_.columns), 'grid gap-x-m'), children: [renderTitle(_.title), renderInputs({ field, inputs: _?.inputs }, productType)] }, `section-${i}`))), renderSubmitButton(button, isSending), esiaStatus === EsiaStatuses.Error ? (_jsx(Text, { size: "text-m", font: "font-medium", color: "text-error", children: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0413\u043E\u0441\u0443\u0441\u043B\u0443\u0433\u0438 \u0434\u043B\u044F \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u044F\u0432\u043A\u0438 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043F\u043E\u043B\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E." })) : null] })] }));
77
+ return (_jsxs(ApplicationFormLayout, { className: style('container space-y-m', className), title: title, ...rest, children: [!esiaStatus ? _jsx(EsiaLoginBanner, { onChangeEsiaStatus: setEsiaStatus }) : null, _jsxs("form", { onSubmit: onSubmitWithPrecondition, className: "space-y-m relative", ref: leadForm, children: [esiaStatus === EsiaStatuses.Pending ? _jsx(Loader, { blur: false }) : null, applicationFormData.map((_, i) => (_jsxs("div", { className: style(inputColumnStyles(_.columns), 'grid gap-x-m'), children: [renderTitle(_.title), renderInputs({ field, inputs: _?.inputs }, productType)] }, `section-${i}`))), renderSubmitButton(button, isSending), esiaStatus === EsiaStatuses.Error ? (_jsx(Text, { size: "text-m", font: "font-medium", color: "text-error", children: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0413\u043E\u0441\u0443\u0441\u043B\u0443\u0433\u0438 \u0434\u043B\u044F \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u044F\u0432\u043A\u0438 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043F\u043E\u043B\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E." })) : null] })] }));
65
78
  });
66
79
  const getInputs = (applicationFormData) => (applicationFormData?.flatMap((_) => _?.inputs) || []);
67
80
  const getExtendedValidatorObj = (productType) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationLeadForm.js","sourceRoot":"","sources":["../../../src/components/ApplicationLeadForm/ApplicationLeadForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationLeadForm.js","sourceRoot":"","sources":["../../../src/components/ApplicationLeadForm/ApplicationLeadForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export interface NoConsentDialogProps extends OnCloseProps {
3
+ attempts: number;
4
+ onSubmit?: (confirmStatus: string) => void;
5
+ }
6
+ export declare const NoConsentDialog: import("@redneckz/uni-jsx").UNIComponent<NoConsentDialogProps, any, any>;
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
4
+ import { locationNavigator } from '../../../external/locationNavigator.js';
5
+ import { Button } from '../../../ui-kit/Button/Button.js';
6
+ import { Dialog } from '../../../ui-kit/DialogManager/Dialog.js';
7
+ import { Paragraph } from '../../../ui-kit/Paragraph/Paragraph.js';
8
+ import { noop } from '../../../utils/noop.js';
9
+ export const NoConsentDialog = JSX(({ attempts, onClose = noop }) => {
10
+ const navigator = locationNavigator();
11
+ const isMaxAttempts = attempts > 1;
12
+ const returnToMainPage = useCallback(() => {
13
+ navigator.assign('/natural');
14
+ }, []);
15
+ const handleClose = useCallback(() => {
16
+ if (isMaxAttempts) {
17
+ returnToMainPage();
18
+ }
19
+ else {
20
+ onClose();
21
+ }
22
+ }, [isMaxAttempts]);
23
+ return (_jsx(Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg px-5xl", onClose: handleClose, children: _jsxs("div", { className: "flex flex-col gap-xl items-center", children: [_jsx(Paragraph, { align: "text-center", children: "\u0423\u0432\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043A\u043B\u0438\u0435\u043D\u0442!" }), _jsx(Paragraph, { align: "text-center", children: "\u0414\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043A\u0440\u0435\u0434\u0438\u0442\u0430 \u0412\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u0432 \u043E\u0444\u0438\u0441 \u0411\u0430\u043D\u043A\u0430" }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-xl items-center", children: [_jsx(Button, { type: "button", version: "secondary", onClick: returnToMainPage, children: "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C" }), isMaxAttempts ? null : (_jsx(Button, { type: "button", onClick: onClose, children: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C" }))] })] }) }));
24
+ });
25
+ //# sourceMappingURL=NoConsentDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoConsentDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/NoConsentDialog/NoConsentDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAO3C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE;IACxF,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,aAAa,EAAE;YACjB,gBAAgB,EAAE,CAAC;SACpB;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAC,6DAA6D,EACvE,OAAO,EAAE,WAAW,YAEpB,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,SAAS,IAAC,KAAK,EAAC,aAAa,6GAA8B,EAC5D,KAAC,SAAS,IAAC,KAAK,EAAC,aAAa,iVAElB,EACZ,eAAK,SAAS,EAAC,+CAA+C,aAC5D,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,gBAAgB,uEAE1D,EACR,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,6EAE7B,CACV,IACG,IACF,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
4
4
  import { useForm } from '../../hooks/useForm/useForm';
5
+ import { NoConsentDialog } from '../../retail/components/NoConsentDialog/NoConsentDialog';
5
6
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
6
7
  import { type FieldRetailDef } from '../../retail/model/RetailFormContent';
7
8
  import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
@@ -12,6 +13,7 @@ import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
12
13
  import { inputColumnStyles } from '../../ui-kit/FormField/inputColumnStyle';
13
14
  import { renderTitle } from '../../ui-kit/FormField/renderTitle';
14
15
  import { Loader } from '../../ui-kit/Loader/Loader';
16
+ import { type PreventableEvent } from '../../ui-kit/PreventableEvent';
15
17
  import { ResponseTypeDialog } from '../../ui-kit/ResponseTypeDialog/ResponseTypeDialog';
16
18
  import { Text } from '../../ui-kit/Text/Text';
17
19
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
@@ -42,9 +44,11 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
42
44
  ...rest
43
45
  }) => {
44
46
  const [esiaStatus, setEsiaStatus] = useState<EsiaStatuses>();
47
+ const [attemptsWithoutConsents, setAttemptsWithoutConsents] = useState(0);
45
48
  const leadForm = useRef<HTMLFormElement | null>(null);
46
49
  const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
47
50
  const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
51
+ const noConsentDialog = useDialog(NoConsentDialog);
48
52
 
49
53
  const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
50
54
  const formValidator = useMemo(
@@ -71,6 +75,17 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
71
75
  onSubmit: handleSubmit,
72
76
  });
73
77
 
78
+ const onSubmitWithPrecondition = (ev: PreventableEvent) => {
79
+ if (!field('processPersonalDataFlg')?.value) {
80
+ setAttemptsWithoutConsents((prev) => prev + 1);
81
+ attemptsWithoutConsents > 0 &&
82
+ noConsentDialog.open({
83
+ attempts: attemptsWithoutConsents,
84
+ });
85
+ }
86
+ onSubmit?.(ev);
87
+ };
88
+
74
89
  const responseTypeDialog = useDialog(ResponseTypeDialog);
75
90
  useEffect(() => {
76
91
  if (ok !== undefined) {
@@ -97,7 +112,7 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
97
112
  {...rest}
98
113
  >
99
114
  {!esiaStatus ? <EsiaLoginBanner onChangeEsiaStatus={setEsiaStatus} /> : null}
100
- <form onSubmit={onSubmit} className="space-y-m relative" ref={leadForm}>
115
+ <form onSubmit={onSubmitWithPrecondition} className="space-y-m relative" ref={leadForm}>
101
116
  {esiaStatus === EsiaStatuses.Pending ? <Loader blur={false} /> : null}
102
117
  {applicationFormData.map((_, i) => (
103
118
  <div
@@ -0,0 +1,55 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import type { OnCloseProps } from '../../../model/OnCloseProps';
4
+
5
+ import { locationNavigator } from '../../../external/locationNavigator';
6
+ import { Button } from '../../../ui-kit/Button/Button';
7
+ import { Dialog } from '../../../ui-kit/DialogManager/Dialog';
8
+ import { Paragraph } from '../../../ui-kit/Paragraph/Paragraph';
9
+ import { noop } from '../../../utils/noop';
10
+
11
+ export interface NoConsentDialogProps extends OnCloseProps {
12
+ attempts: number;
13
+ onSubmit?: (confirmStatus: string) => void;
14
+ }
15
+
16
+ export const NoConsentDialog = JSX<NoConsentDialogProps>(({ attempts, onClose = noop }) => {
17
+ const navigator = locationNavigator();
18
+ const isMaxAttempts = attempts > 1;
19
+
20
+ const returnToMainPage = useCallback(() => {
21
+ navigator.assign('/natural');
22
+ }, []);
23
+
24
+ const handleClose = useCallback(() => {
25
+ if (isMaxAttempts) {
26
+ returnToMainPage();
27
+ } else {
28
+ onClose();
29
+ }
30
+ }, [isMaxAttempts]);
31
+
32
+ return (
33
+ <Dialog
34
+ className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg px-5xl"
35
+ onClose={handleClose}
36
+ >
37
+ <div className="flex flex-col gap-xl items-center">
38
+ <Paragraph align="text-center">Уважаемый клиент!</Paragraph>
39
+ <Paragraph align="text-center">
40
+ Для получения кредита Вам необходимо обратиться в офис Банка
41
+ </Paragraph>
42
+ <div className="flex flex-col sm:flex-row gap-xl items-center">
43
+ <Button type="button" version="secondary" onClick={returnToMainPage}>
44
+ Завершить
45
+ </Button>
46
+ {isMaxAttempts ? null : (
47
+ <Button type="button" onClick={onClose}>
48
+ Продолжить
49
+ </Button>
50
+ )}
51
+ </div>
52
+ </div>
53
+ </Dialog>
54
+ );
55
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.14.872",
3
+ "version": "0.14.873",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -2,6 +2,7 @@
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
4
4
  import { useForm } from '../../hooks/useForm/useForm';
5
+ import { NoConsentDialog } from '../../retail/components/NoConsentDialog/NoConsentDialog';
5
6
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
6
7
  import { type FieldRetailDef } from '../../retail/model/RetailFormContent';
7
8
  import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
@@ -12,6 +13,7 @@ import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
12
13
  import { inputColumnStyles } from '../../ui-kit/FormField/inputColumnStyle';
13
14
  import { renderTitle } from '../../ui-kit/FormField/renderTitle';
14
15
  import { Loader } from '../../ui-kit/Loader/Loader';
16
+ import { type PreventableEvent } from '../../ui-kit/PreventableEvent';
15
17
  import { ResponseTypeDialog } from '../../ui-kit/ResponseTypeDialog/ResponseTypeDialog';
16
18
  import { Text } from '../../ui-kit/Text/Text';
17
19
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
@@ -42,9 +44,11 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
42
44
  ...rest
43
45
  }) => {
44
46
  const [esiaStatus, setEsiaStatus] = useState<EsiaStatuses>();
47
+ const [attemptsWithoutConsents, setAttemptsWithoutConsents] = useState(0);
45
48
  const leadForm = useRef<HTMLFormElement | null>(null);
46
49
  const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
47
50
  const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
51
+ const noConsentDialog = useDialog(NoConsentDialog);
48
52
 
49
53
  const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
50
54
  const formValidator = useMemo(
@@ -71,6 +75,17 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
71
75
  onSubmit: handleSubmit,
72
76
  });
73
77
 
78
+ const onSubmitWithPrecondition = (ev: PreventableEvent) => {
79
+ if (!field('processPersonalDataFlg')?.value) {
80
+ setAttemptsWithoutConsents((prev) => prev + 1);
81
+ attemptsWithoutConsents > 0 &&
82
+ noConsentDialog.open({
83
+ attempts: attemptsWithoutConsents,
84
+ });
85
+ }
86
+ onSubmit?.(ev);
87
+ };
88
+
74
89
  const responseTypeDialog = useDialog(ResponseTypeDialog);
75
90
  useEffect(() => {
76
91
  if (ok !== undefined) {
@@ -97,7 +112,7 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
97
112
  {...rest}
98
113
  >
99
114
  {!esiaStatus ? <EsiaLoginBanner onChangeEsiaStatus={setEsiaStatus} /> : null}
100
- <form onSubmit={onSubmit} className="space-y-m relative" ref={leadForm}>
115
+ <form onSubmit={onSubmitWithPrecondition} className="space-y-m relative" ref={leadForm}>
101
116
  {esiaStatus === EsiaStatuses.Pending ? <Loader blur={false} /> : null}
102
117
  {applicationFormData.map((_, i) => (
103
118
  <div
@@ -0,0 +1,7 @@
1
+ import '../../../setup-fixture';
2
+
3
+ import { NoConsentDialog } from './NoConsentDialog';
4
+
5
+ export default {
6
+ default: <NoConsentDialog attempts={1} />,
7
+ };
@@ -0,0 +1,55 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import type { OnCloseProps } from '../../../model/OnCloseProps';
4
+
5
+ import { locationNavigator } from '../../../external/locationNavigator';
6
+ import { Button } from '../../../ui-kit/Button/Button';
7
+ import { Dialog } from '../../../ui-kit/DialogManager/Dialog';
8
+ import { Paragraph } from '../../../ui-kit/Paragraph/Paragraph';
9
+ import { noop } from '../../../utils/noop';
10
+
11
+ export interface NoConsentDialogProps extends OnCloseProps {
12
+ attempts: number;
13
+ onSubmit?: (confirmStatus: string) => void;
14
+ }
15
+
16
+ export const NoConsentDialog = JSX<NoConsentDialogProps>(({ attempts, onClose = noop }) => {
17
+ const navigator = locationNavigator();
18
+ const isMaxAttempts = attempts > 1;
19
+
20
+ const returnToMainPage = useCallback(() => {
21
+ navigator.assign('/natural');
22
+ }, []);
23
+
24
+ const handleClose = useCallback(() => {
25
+ if (isMaxAttempts) {
26
+ returnToMainPage();
27
+ } else {
28
+ onClose();
29
+ }
30
+ }, [isMaxAttempts]);
31
+
32
+ return (
33
+ <Dialog
34
+ className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg px-5xl"
35
+ onClose={handleClose}
36
+ >
37
+ <div className="flex flex-col gap-xl items-center">
38
+ <Paragraph align="text-center">Уважаемый клиент!</Paragraph>
39
+ <Paragraph align="text-center">
40
+ Для получения кредита Вам необходимо обратиться в офис Банка
41
+ </Paragraph>
42
+ <div className="flex flex-col sm:flex-row gap-xl items-center">
43
+ <Button type="button" version="secondary" onClick={returnToMainPage}>
44
+ Завершить
45
+ </Button>
46
+ {isMaxAttempts ? null : (
47
+ <Button type="button" onClick={onClose}>
48
+ Продолжить
49
+ </Button>
50
+ )}
51
+ </div>
52
+ </div>
53
+ </Dialog>
54
+ );
55
+ });