@redneckz/wildless-cms-uni-blocks 0.14.935 → 0.14.937

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 (158) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +179 -10
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  5. package/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  6. package/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  7. package/bundle/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  8. package/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  9. package/bundle/retail/api/getDictionaries.d.ts +1 -1
  10. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +3 -3
  11. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  12. package/dist/components/Blocks.js +2 -0
  13. package/dist/components/Blocks.js.map +1 -1
  14. package/dist/components/Blocks.mobile.js +2 -0
  15. package/dist/components/Blocks.mobile.js.map +1 -1
  16. package/dist/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  17. package/dist/components/CashbackCalculator/CashbackCalculator.js +28 -0
  18. package/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  19. package/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  20. package/dist/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  21. package/dist/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  22. package/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  23. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js +27 -0
  24. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  25. package/dist/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  26. package/dist/components/CashbackCalculator/CashbackCategory.js +72 -0
  27. package/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  28. package/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  29. package/dist/components/CashbackCalculator/useCashbackCalculator.js +77 -0
  30. package/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  31. package/dist/retail/api/getDictionaries.d.ts +1 -1
  32. package/dist/retail/api/getDictionaries.js +2 -2
  33. package/dist/retail/api/getDictionaries.js.map +1 -1
  34. package/dist/retail/validator/validators.js +3 -3
  35. package/dist/retail/validator/validators.js.map +1 -1
  36. package/dist/ui-kit/Select/filterOptions.js +1 -1
  37. package/dist/ui-kit/Select/filterOptions.js.map +1 -1
  38. package/lib/common.css +1 -1
  39. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +3 -3
  40. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  41. package/lib/components/Blocks.js +2 -0
  42. package/lib/components/Blocks.js.map +1 -1
  43. package/lib/components/Blocks.mobile.js +2 -0
  44. package/lib/components/Blocks.mobile.js.map +1 -1
  45. package/lib/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  46. package/lib/components/CashbackCalculator/CashbackCalculator.fixture.d.ts +6 -0
  47. package/lib/components/CashbackCalculator/CashbackCalculator.fixture.mobile.d.ts +5 -0
  48. package/lib/components/CashbackCalculator/CashbackCalculator.js +26 -0
  49. package/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  50. package/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  51. package/lib/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  52. package/lib/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  53. package/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  54. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js +25 -0
  55. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  56. package/lib/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  57. package/lib/components/CashbackCalculator/CashbackCategory.js +70 -0
  58. package/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  59. package/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  60. package/lib/components/CashbackCalculator/useCashbackCalculator.js +74 -0
  61. package/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  62. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +1 -1
  63. package/lib/retail/api/getDictionaries.d.ts +1 -1
  64. package/lib/retail/api/getDictionaries.js +2 -2
  65. package/lib/retail/api/getDictionaries.js.map +1 -1
  66. package/lib/retail/validator/validators.js +3 -3
  67. package/lib/retail/validator/validators.js.map +1 -1
  68. package/lib/ui-kit/Select/filterOptions.js +1 -1
  69. package/lib/ui-kit/Select/filterOptions.js.map +1 -1
  70. package/mobile/bundle/bundle.umd.js +179 -10
  71. package/mobile/bundle/bundle.umd.min.js +1 -1
  72. package/mobile/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  73. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  74. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  75. package/mobile/bundle/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  76. package/mobile/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  77. package/mobile/bundle/retail/api/getDictionaries.d.ts +1 -1
  78. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +3 -3
  79. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  80. package/mobile/dist/components/Blocks.js +2 -0
  81. package/mobile/dist/components/Blocks.js.map +1 -1
  82. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  83. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js +28 -0
  84. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  85. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  86. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  87. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  88. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  89. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js +27 -0
  90. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  91. package/mobile/dist/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  92. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js +72 -0
  93. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  94. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  95. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js +77 -0
  96. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  97. package/mobile/dist/retail/api/getDictionaries.d.ts +1 -1
  98. package/mobile/dist/retail/api/getDictionaries.js +2 -2
  99. package/mobile/dist/retail/api/getDictionaries.js.map +1 -1
  100. package/mobile/dist/retail/validator/validators.js +3 -3
  101. package/mobile/dist/retail/validator/validators.js.map +1 -1
  102. package/mobile/dist/ui-kit/Select/filterOptions.js +1 -1
  103. package/mobile/dist/ui-kit/Select/filterOptions.js.map +1 -1
  104. package/mobile/lib/common.css +1 -1
  105. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +3 -3
  106. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  107. package/mobile/lib/components/Blocks.js +2 -0
  108. package/mobile/lib/components/Blocks.js.map +1 -1
  109. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  110. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js +26 -0
  111. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  112. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  113. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  114. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  115. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  116. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js +25 -0
  117. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  118. package/mobile/lib/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  119. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js +70 -0
  120. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  121. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  122. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js +74 -0
  123. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  124. package/mobile/lib/retail/api/getDictionaries.d.ts +1 -1
  125. package/mobile/lib/retail/api/getDictionaries.js +2 -2
  126. package/mobile/lib/retail/api/getDictionaries.js.map +1 -1
  127. package/mobile/lib/retail/validator/validators.js +3 -3
  128. package/mobile/lib/retail/validator/validators.js.map +1 -1
  129. package/mobile/lib/ui-kit/Select/filterOptions.js +1 -1
  130. package/mobile/lib/ui-kit/Select/filterOptions.js.map +1 -1
  131. package/mobile/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +3 -3
  132. package/mobile/src/components/Blocks.ts +2 -0
  133. package/mobile/src/components/CashbackCalculator/CashbackCalculator.example.json +1 -0
  134. package/mobile/src/components/CashbackCalculator/CashbackCalculator.tsx +117 -0
  135. package/mobile/src/components/CashbackCalculator/CashbackCalculator.ui.json +15 -0
  136. package/mobile/src/components/CashbackCalculator/CashbackCalculatorContent.ts +27 -0
  137. package/mobile/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +66 -0
  138. package/mobile/src/components/CashbackCalculator/CashbackCategory.tsx +143 -0
  139. package/mobile/src/components/CashbackCalculator/useCashbackCalculator.ts +93 -0
  140. package/mobile/src/retail/api/getDictionaries.ts +2 -2
  141. package/mobile/src/retail/validator/validators.ts +3 -3
  142. package/mobile/src/ui-kit/Select/filterOptions.ts +1 -1
  143. package/package.json +1 -1
  144. package/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +3 -3
  145. package/src/components/Blocks.mobile.ts +2 -0
  146. package/src/components/Blocks.ts +2 -0
  147. package/src/components/CashbackCalculator/CashbackCalculator.example.json +1 -0
  148. package/src/components/CashbackCalculator/CashbackCalculator.fixture.mobile.tsx +45 -0
  149. package/src/components/CashbackCalculator/CashbackCalculator.fixture.tsx +54 -0
  150. package/src/components/CashbackCalculator/CashbackCalculator.tsx +117 -0
  151. package/src/components/CashbackCalculator/CashbackCalculator.ui.json +15 -0
  152. package/src/components/CashbackCalculator/CashbackCalculatorContent.ts +27 -0
  153. package/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +66 -0
  154. package/src/components/CashbackCalculator/CashbackCategory.tsx +143 -0
  155. package/src/components/CashbackCalculator/useCashbackCalculator.ts +93 -0
  156. package/src/retail/api/getDictionaries.ts +2 -2
  157. package/src/retail/validator/validators.ts +3 -3
  158. package/src/ui-kit/Select/filterOptions.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  import { fetchRetailJSON } from './doRequest.js';
2
- export const getDictionaries = (dictionaries, store) => {
3
- Promise.all(Object.entries(dictionaries).map((dictionary) => {
2
+ export const getDictionaries = async (dictionaries, store) => {
3
+ await Promise.all(Object.entries(dictionaries).map((dictionary) => {
4
4
  const [fieldName, dictionaryName] = dictionary;
5
5
  fetchRetailJSON(`/dictionary?dictionaryType=${encodeURIComponent(dictionaryName)}`, 'POST').then((res) => {
6
6
  store[fieldName] = res;
@@ -1 +1 @@
1
- {"version":3,"file":"getDictionaries.js","sourceRoot":"","sources":["../../../src/retail/api/getDictionaries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,YAAoC,EACpC,KAAgC,EAChC,EAAE;IACF,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC9C,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,UAAU,CAAC;QAE/C,eAAe,CACb,8BAA8B,kBAAkB,CAAC,cAAc,CAAC,EAAE,EAClE,MAAM,CACP,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"getDictionaries.js","sourceRoot":"","sources":["../../../src/retail/api/getDictionaries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,YAAoC,EACpC,KAAgC,EAChC,EAAE;IACF,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC9C,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,UAAU,CAAC;QAE/C,eAAe,CACb,8BAA8B,kBAAkB,CAAC,cAAc,CAAC,EAAE,EAClE,MAAM,CACP,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -11,7 +11,7 @@ export const addressOrganizationValidator = () => validator((address) => Boolean
11
11
  export const codeWordValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length >= 3 && _.length <= 21 && codeWordPattern.test(_))(errorMsg ?? ERROR_MESSAGE);
12
12
  export const nameRetailValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length > 1 && retailCyrillicPattern.test(_))(errorMsg ?? ERROR_MESSAGE);
13
13
  export const jobNumberValidator = (errorMsg) => validator((_) => typeof _ === 'string' && /^[0-9]{1,2}$/g.test(_))(errorMsg ?? ERROR_MESSAGE);
14
- export const lengthStringValidator = (inputLength, errorMsg, isFixLength) => validator((_) => typeof _ === 'string' &&
14
+ export const lengthStringValidator = (inputLength, errorMsg, isFixLength = false) => validator((_) => typeof _ === 'string' &&
15
15
  _.length >= 1 &&
16
16
  (isFixLength ? _.length === inputLength : _.length <= inputLength))(errorMsg ?? ERROR_MESSAGE);
17
17
  const limitedBirthdayValidate = ({ minAge, maxAge }) => (date) => {
@@ -64,6 +64,6 @@ export const validateDateFromBirth = (age, birthDate) => validator((_) => {
64
64
  }
65
65
  return false;
66
66
  });
67
- export const organizationNameValidator = (isDadataOrganization) => validator((_) => Boolean(_) && Boolean(isDadataOrganization))('Укажите наименование организации');
68
- export const organizationInnValidator = (isDadataOrganization) => validator((_) => isValidInnLength(_) && Boolean(isDadataOrganization))('Укажите ИНН');
67
+ export const organizationNameValidator = (isDadataOrganization = false) => validator((_) => Boolean(_) && Boolean(isDadataOrganization))('Укажите наименование организации');
68
+ export const organizationInnValidator = (isDadataOrganization = false) => validator((_) => isValidInnLength(_) && Boolean(isDadataOrganization))('Укажите ИНН');
69
69
  //# sourceMappingURL=validators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/retail/validator/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/retail/validator/validators.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export const filterOptions = (options, query, disableFilterOptions) => {
1
+ export const filterOptions = (options, query, disableFilterOptions = false) => {
2
2
  if (!options?.length || !query?.trim() || disableFilterOptions) {
3
3
  return options;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filterOptions.js","sourceRoot":"","sources":["../../../src/ui-kit/Select/filterOptions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAiB,EACjB,KAAyB,EACzB,oBAA8B,EACpB,EAAE;IACZ,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,oBAAoB,EAAE;QAC9D,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CACxE,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"filterOptions.js","sourceRoot":"","sources":["../../../src/ui-kit/Select/filterOptions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAiB,EACjB,KAAyB,EACzB,oBAAoB,GAAG,KAAK,EAClB,EAAE;IACZ,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,oBAAoB,EAAE;QAC9D,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CACxE,CAAC;AACJ,CAAC,CAAC"}
@@ -57,7 +57,7 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
57
57
  () => getFormValidator(inputs, extendedValidatorObj),
58
58
  [inputs, extendedValidatorObj],
59
59
  );
60
- const changeSubmitFormStatus = (status?: boolean) => {
60
+ const changeSubmitFormStatus = (status = false) => {
61
61
  setOK(status);
62
62
  };
63
63
 
@@ -94,10 +94,10 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
94
94
 
95
95
  const responseTypeDialog = useDialog(ResponseTypeDialog);
96
96
  useEffect(() => {
97
- if (ok !== undefined) {
97
+ if (ok === false) {
98
98
  responseTypeDialog.open({
99
99
  ok,
100
- onClose: () => changeSubmitFormStatus(undefined),
100
+ onClose: () => changeSubmitFormStatus(true),
101
101
  });
102
102
  }
103
103
  }, [ok]);
@@ -17,6 +17,7 @@ import { Carousel } from './Carousel/Carousel';
17
17
  import { CarouselCatalogCard } from './CarouselCatalogCard/CarouselCatalogCard';
18
18
  import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
19
19
  import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
20
+ import { CashbackCalculator } from './CashbackCalculator/CashbackCalculator';
20
21
  import { CreditCardForm } from './CreditCardForm/CreditCardForm';
21
22
  import { CreditForm } from './CreditForm/CreditForm';
22
23
  import { DebitForm } from './DebitForm/DebitForm';
@@ -86,4 +87,5 @@ export const Blocks: BlocksRegistry = {
86
87
  CreditCardForm,
87
88
  CreditForm,
88
89
  DebitForm,
90
+ CashbackCalculator,
89
91
  };
@@ -0,0 +1,117 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
3
+ import { Button } from '../../ui-kit/Button/Button';
4
+ import { Img } from '../../ui-kit/Img/Img';
5
+ import { InfoCard } from '../../ui-kit/InfoCard/InfoCard';
6
+ import { LinkButton } from '../../ui-kit/LinkButton/LinkButton';
7
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
8
+ import { style } from '../../utils/style';
9
+ import { Headline } from '../Headline/Headline';
10
+ import { type Cashback, type CashbackCalculatorContent } from './CashbackCalculatorContent';
11
+ import { CashbackCalculatorResult } from './CashbackCalculatorResult';
12
+ import { CashbackCategory } from './CashbackCategory';
13
+ import { useCashbackCalculator } from './useCashbackCalculator';
14
+
15
+ const INCREASED_PERCENTS = ['5', '10', '15'];
16
+
17
+ const MAX_CATEGORIES = 5;
18
+
19
+ const INFO_BLOCK_HTML = `<p>Полученные баллы можно конвертировать в рубли и компенсировать покупки у партнеров. Подробнее в <a href='#docs'>документах</a></p>`;
20
+
21
+ interface CashbackCalculatorProps extends CashbackCalculatorContent, UniBlockProps {}
22
+
23
+ export const CashbackCalculator = JSX<CashbackCalculatorProps>(
24
+ ({
25
+ maxInputRange = 300000,
26
+ image,
27
+ deleteImage,
28
+ infoImage,
29
+ isMultiple = false,
30
+ className = '',
31
+ ...rest
32
+ }) => {
33
+ const {
34
+ cashbacks,
35
+ categories,
36
+ onAddNewCashback,
37
+ onChangeCashback,
38
+ onDeleteCashback,
39
+ onResetCashback,
40
+ } = useCashbackCalculator(isMultiple);
41
+
42
+ const img = image?.src ? (
43
+ <Img image={image} className="hidden w-full @xl:block" imageClassName="justify-self-center" />
44
+ ) : null;
45
+
46
+ return (
47
+ <BlockWrapper
48
+ className={style('flex flex-col justify-center items-center gap-lg', className)}
49
+ defaultPadding={style('p-6xl')}
50
+ {...rest}
51
+ >
52
+ <Headline
53
+ title="Калькулятор кешбэка"
54
+ description="Выберите 5 категорий кешбэка, и вы получите общий расчет получаемого кешбэка"
55
+ headlineVersion="XL"
56
+ isEmbedded={true}
57
+ />
58
+ <div className="flex flex-row items-start gap-lg">
59
+ <div className="w-full flex flex-col justify-center items-center gap-lg">
60
+ {cashbacks.map((_) => (
61
+ <CashbackCategory
62
+ key={String(_.id)}
63
+ categories={categories}
64
+ cashback={_}
65
+ showIncreasedPercents={showIncreasedPercents(_, cashbacks)}
66
+ maxInputRange={maxInputRange}
67
+ deleteImage={deleteImage}
68
+ onDelete={onDeleteCashback}
69
+ onChange={onChangeCashback}
70
+ />
71
+ ))}
72
+ {renderButtons(cashbacks.length, onAddNewCashback, onResetCashback)}
73
+ <CashbackCalculatorResult cashbacks={cashbacks} />
74
+ <InfoCard __html={INFO_BLOCK_HTML} image={infoImage} />
75
+ <LinkButton
76
+ className="w-full @lg:w-auto self-start"
77
+ href="#zayavka"
78
+ text="Оформить карту"
79
+ version="primary"
80
+ />
81
+ </div>
82
+ {img}
83
+ </div>
84
+ </BlockWrapper>
85
+ );
86
+ },
87
+ );
88
+
89
+ const renderButtons = (
90
+ cashbacksLength: number,
91
+ onAddNewCashback: () => void,
92
+ onResetCashback: () => void,
93
+ ) => {
94
+ return (
95
+ <div className="w-full flex flex-col gap-lg">
96
+ {cashbacksLength < MAX_CATEGORIES ? (
97
+ <Button
98
+ className="self-start text-primary-main"
99
+ embedded
100
+ version="secondary"
101
+ onClick={onAddNewCashback}
102
+ >
103
+ Добавить еще
104
+ </Button>
105
+ ) : null}
106
+ {cashbacksLength > 2 ? (
107
+ <Button className="self-start" version="secondary" onClick={onResetCashback}>
108
+ Сбросить все категории
109
+ </Button>
110
+ ) : null}
111
+ </div>
112
+ );
113
+ };
114
+
115
+ const showIncreasedPercents = (currentCashback: Cashback, cashback: Cashback[]) =>
116
+ INCREASED_PERCENTS.includes(currentCashback.percent.key) ||
117
+ !cashback.some((_) => INCREASED_PERCENTS.includes(_.percent.key));
@@ -0,0 +1,15 @@
1
+ {
2
+ "style": {
3
+ "ui:options": {
4
+ "minCols": 12
5
+ }
6
+ },
7
+ "content": {
8
+ "deleteImage": {
9
+ "ui:field": "picture"
10
+ },
11
+ "infoImage": {
12
+ "ui:field": "picture"
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,27 @@
1
+ import { type TitleProps } from '../../model/HeadlineType';
2
+ import { type Picture } from '../../model/Picture';
3
+ import { type Option } from '../../ui-kit/Select/Option';
4
+ import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
5
+
6
+ export type Cashback = {
7
+ id: number;
8
+ percent: Option;
9
+ sum: number;
10
+ };
11
+
12
+ /**
13
+ * @title Блок калькулятора кэшбека
14
+ */
15
+ export type CashbackCalculatorContent = UniBlockContent &
16
+ TitleProps & {
17
+ /** @title Максимальное значение поля 'Сумма покупок в категории' */
18
+ maxInputRange?: number;
19
+ /** @title Изображение */
20
+ image?: Picture;
21
+ /** @title Иконка кнопки удаления категории */
22
+ deleteImage?: Picture;
23
+ /** @title Иконка информационного блока */
24
+ infoImage?: Picture;
25
+ /** @title Предзаполнение дефолтного значения несколькими категориями */
26
+ isMultiple?: boolean;
27
+ };
@@ -0,0 +1,66 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { Text } from '../../ui-kit/Text/Text';
3
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
4
+ import { toLocalNumberFormat } from '../../utils/toLocalNumberFormat';
5
+ import { Headline } from '../Headline/Headline';
6
+ import { type Cashback } from './CashbackCalculatorContent';
7
+
8
+ const MAX_MONTH_CASHBACK = 5000;
9
+ const MAX_YEAR_CASHBACK = 60000;
10
+
11
+ export type CashbackCalculatorResultProps = UniBlockProps & {
12
+ cashbacks: Cashback[];
13
+ };
14
+
15
+ type ResultTextProps = {
16
+ text: string;
17
+ value: number;
18
+ };
19
+
20
+ const ResultText = JSX<ResultTextProps>(({ text, value }) => (
21
+ <div className="space-y-xs w-full">
22
+ <Text size="text-m" color="text-primary-text" font="font-light">
23
+ {text}
24
+ </Text>
25
+ <div className="w-full text-2xl bg-main-gray px-4 py-3 rounded-md">{`${toLocalNumberFormat()(
26
+ value,
27
+ )} ₽`}</div>
28
+ </div>
29
+ ));
30
+
31
+ export const CashbackCalculatorResult = JSX<CashbackCalculatorResultProps>(({ cashbacks }) => {
32
+ const { mounth, year } = getResult(cashbacks);
33
+
34
+ return (
35
+ <div className="w-full flex flex-col gap-lg">
36
+ <Headline
37
+ title="Результат расчета"
38
+ description="Категории кешбэка предварительно"
39
+ headlineVersion="XS"
40
+ isEmbedded={true}
41
+ align="text-left"
42
+ />
43
+ <div className="flex flex-col @xs:flex-row gap-lg">
44
+ <ResultText text="Баллов в месяц" value={mounth} />
45
+ <ResultText text="Баллов в год" value={year} />
46
+ </div>
47
+ </div>
48
+ );
49
+ });
50
+
51
+ const getResult = (cashbacks: Cashback[]) => {
52
+ return cashbacks.reduce(
53
+ (acc, val) => {
54
+ const mounthSum = (Number(val.percent.key) / 100) * val.sum;
55
+
56
+ return {
57
+ mounth: Math.min(acc.mounth + mounthSum, MAX_MONTH_CASHBACK),
58
+ year: Math.min(acc.year + mounthSum * 12, MAX_YEAR_CASHBACK),
59
+ };
60
+ },
61
+ {
62
+ mounth: 0,
63
+ year: 0,
64
+ },
65
+ );
66
+ };
@@ -0,0 +1,143 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type Picture } from '../../model/Picture';
4
+ import { Button } from '../../ui-kit/Button/Button';
5
+ import { Img } from '../../ui-kit/Img/Img';
6
+ import { InputRange } from '../../ui-kit/InputRange/InputRange';
7
+ import { type Option } from '../../ui-kit/Select/Option';
8
+ import { Select } from '../../ui-kit/Select/Select';
9
+ import { Text } from '../../ui-kit/Text/Text';
10
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
11
+ import { type Cashback } from './CashbackCalculatorContent';
12
+
13
+ const AllPercentCategories: Option[] = [
14
+ {
15
+ text: 'Категория на кешбэк 1,5%',
16
+ key: '1.5',
17
+ },
18
+ {
19
+ text: 'Категория на кешбэк 3%',
20
+ key: '3',
21
+ },
22
+ {
23
+ text: 'Категория на кешбэк 5%',
24
+ key: '5',
25
+ },
26
+ {
27
+ text: 'Категория на кешбэк 10%',
28
+ key: '10',
29
+ },
30
+ {
31
+ text: 'Категория на кешбэк 15%',
32
+ key: '15',
33
+ },
34
+ ];
35
+
36
+ const PercentCategoriesWithoutIncreased: Option[] = [
37
+ {
38
+ text: 'Категория на кешбэк 1,5%',
39
+ key: '1.5',
40
+ },
41
+ {
42
+ text: 'Категория на кешбэк 3%',
43
+ key: '3',
44
+ },
45
+ ];
46
+
47
+ export interface CashbackCategoryProps extends UniBlockProps {
48
+ categories?: Option[];
49
+ cashback: Cashback;
50
+ showIncreasedPercents: boolean;
51
+ maxInputRange: number;
52
+ deleteImage?: Picture;
53
+ onDelete: (id: number) => void;
54
+ onChange: (item: Cashback) => void;
55
+ }
56
+
57
+ export const CashbackCategory = JSX<CashbackCategoryProps>(
58
+ ({
59
+ categories,
60
+ cashback,
61
+ showIncreasedPercents,
62
+ maxInputRange,
63
+ deleteImage,
64
+ onDelete,
65
+ onChange,
66
+ }) => {
67
+ const [currentCategory, setCurrentCategory] = useState(getRandomElement(categories));
68
+ const isMainCashback = cashback.id === 0;
69
+ const onChangePercent = (value: Option) => {
70
+ onChange({
71
+ ...cashback,
72
+ percent: value,
73
+ });
74
+ };
75
+
76
+ const onChangeSum = (value: number) => {
77
+ onChange({
78
+ ...cashback,
79
+ sum: value,
80
+ });
81
+ };
82
+
83
+ return (
84
+ <div className="w-full space-y-m">
85
+ <div className="space-y-xs">
86
+ <Text size="text-m" color="text-primary-text" font="font-light">
87
+ Выберите категорию кешбэка
88
+ </Text>
89
+ <div className="flex gap-m">
90
+ <Select
91
+ className="w-full"
92
+ isManualInput={isMainCashback}
93
+ placeholder="Выберите кэшбэк"
94
+ options={getPercentCategories(isMainCashback, showIncreasedPercents)}
95
+ value={cashback.percent}
96
+ onChange={onChangePercent}
97
+ />
98
+ {!isMainCashback ? (
99
+ <Button
100
+ version="secondary"
101
+ onClick={() => onDelete(cashback.id)}
102
+ shape="round"
103
+ className="px-4 rounded-md"
104
+ >
105
+ <Img image={deleteImage} />
106
+ </Button>
107
+ ) : null}
108
+ </div>
109
+ </div>
110
+ {categories?.length && !isMainCashback ? (
111
+ <Select
112
+ label="Выберите катеорию"
113
+ placeholder="Выберите катеорию"
114
+ options={categories}
115
+ value={currentCategory}
116
+ onChange={setCurrentCategory}
117
+ />
118
+ ) : null}
119
+ <InputRange
120
+ step={500}
121
+ title="Сумма покупок в категории"
122
+ min={0}
123
+ max={maxInputRange}
124
+ value={cashback.sum}
125
+ onChange={onChangeSum}
126
+ />
127
+ </div>
128
+ );
129
+ },
130
+ );
131
+
132
+ const getRandomElement = <T,>(arr?: T[]): T | undefined =>
133
+ arr?.[new Date().getTime().toString().slice(-1)];
134
+
135
+ const getPercentCategories = (isMainCashback: boolean, showIncreasedPercents: boolean) => {
136
+ if (isMainCashback) {
137
+ return [];
138
+ } else if (showIncreasedPercents) {
139
+ return AllPercentCategories;
140
+ } else {
141
+ return PercentCategoriesWithoutIncreased;
142
+ }
143
+ };
@@ -0,0 +1,93 @@
1
+ import { useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { useLeadFormData } from '../../retail/hooks/useLeadFormData';
3
+ import { type DictionaryItem } from '../../retail/model/LeadFormData';
4
+ import { type Option } from '../../ui-kit/Select/Option';
5
+ import { type Cashback } from './CashbackCalculatorContent';
6
+
7
+ const DEFAULT_MULTIPLE_CASHBACK: Cashback[] = [
8
+ {
9
+ id: 0,
10
+ percent: {
11
+ text: 'Категория на кешбэк 1%',
12
+ key: '1',
13
+ },
14
+ sum: 5000,
15
+ },
16
+ {
17
+ id: 1,
18
+ percent: {
19
+ text: 'Категория на кешбэк 1,5%',
20
+ key: '1.5',
21
+ },
22
+ sum: 5000,
23
+ },
24
+ {
25
+ id: 2,
26
+ percent: {
27
+ text: 'Категория на кешбэк 1,5%',
28
+ key: '1.5',
29
+ },
30
+ sum: 5000,
31
+ },
32
+ ];
33
+
34
+ const DEFAULT_CASHBACK: Cashback[] = [
35
+ {
36
+ id: 0,
37
+ percent: {
38
+ text: 'Категория на кешбэк 1%',
39
+ key: '1',
40
+ },
41
+ sum: 5000,
42
+ },
43
+ ];
44
+
45
+ export const useCashbackCalculator = (isMultiple: boolean) => {
46
+ const { data } = useLeadFormData('CASHBACK_CATEGORY');
47
+ const [cashbacks, setCashbacks] = useState<Cashback[]>(
48
+ isMultiple ? DEFAULT_MULTIPLE_CASHBACK : DEFAULT_CASHBACK,
49
+ );
50
+
51
+ const categories: Option[] =
52
+ data?.map((_: DictionaryItem) => ({
53
+ key: _.key || '',
54
+ text: _.value,
55
+ })) || [];
56
+
57
+ const onAddNewCashback = () =>
58
+ setCashbacks((_) => [
59
+ ..._,
60
+ {
61
+ id: _[_.length - 1].id + 1,
62
+ percent: {
63
+ text: 'Категория на кешбэк 1,5%',
64
+ key: '1.5',
65
+ },
66
+ sum: 5000,
67
+ },
68
+ ]);
69
+
70
+ const onChangeCashback = (item: Cashback) =>
71
+ setCashbacks((prev) =>
72
+ prev.map((_) => {
73
+ if (_.id === item.id) {
74
+ return item;
75
+ }
76
+
77
+ return _;
78
+ }),
79
+ );
80
+
81
+ const onDeleteCashback = (id: number) => setCashbacks((prev) => prev.filter((_) => _.id !== id));
82
+
83
+ const onResetCashback = () => setCashbacks(DEFAULT_CASHBACK);
84
+
85
+ return {
86
+ cashbacks,
87
+ categories,
88
+ onAddNewCashback,
89
+ onChangeCashback,
90
+ onDeleteCashback,
91
+ onResetCashback,
92
+ };
93
+ };
@@ -2,11 +2,11 @@ import { type CreditFormDictionarySlice } from '../hooks/useRetailFormStore';
2
2
  import { type DictionaryItem } from '../model/LeadFormData';
3
3
  import { fetchRetailJSON } from './doRequest';
4
4
 
5
- export const getDictionaries = (
5
+ export const getDictionaries = async (
6
6
  dictionaries: Record<string, string>,
7
7
  store: CreditFormDictionarySlice,
8
8
  ) => {
9
- Promise.all(
9
+ await Promise.all(
10
10
  Object.entries(dictionaries).map((dictionary) => {
11
11
  const [fieldName, dictionaryName] = dictionary;
12
12
 
@@ -42,7 +42,7 @@ export const jobNumberValidator = (errorMsg?: string) =>
42
42
  export const lengthStringValidator = (
43
43
  inputLength: number,
44
44
  errorMsg?: string,
45
- isFixLength?: boolean,
45
+ isFixLength = false,
46
46
  ) =>
47
47
  validator(
48
48
  (_) =>
@@ -137,10 +137,10 @@ export const validateDateFromBirth = (age: number, birthDate?: Date) =>
137
137
  return false;
138
138
  });
139
139
 
140
- export const organizationNameValidator = (isDadataOrganization?: boolean) =>
140
+ export const organizationNameValidator = (isDadataOrganization = false) =>
141
141
  validator((_: string) => Boolean(_) && Boolean(isDadataOrganization))(
142
142
  'Укажите наименование организации',
143
143
  );
144
144
 
145
- export const organizationInnValidator = (isDadataOrganization?: boolean) =>
145
+ export const organizationInnValidator = (isDadataOrganization = false) =>
146
146
  validator((_: string) => isValidInnLength(_) && Boolean(isDadataOrganization))('Укажите ИНН');
@@ -3,7 +3,7 @@ import { type Option } from './Option';
3
3
  export const filterOptions = (
4
4
  options: Option[],
5
5
  query: string | undefined,
6
- disableFilterOptions?: boolean,
6
+ disableFilterOptions = false,
7
7
  ): Option[] => {
8
8
  if (!options?.length || !query?.trim() || disableFilterOptions) {
9
9
  return options;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.14.935",
3
+ "version": "0.14.937",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -57,7 +57,7 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
57
57
  () => getFormValidator(inputs, extendedValidatorObj),
58
58
  [inputs, extendedValidatorObj],
59
59
  );
60
- const changeSubmitFormStatus = (status?: boolean) => {
60
+ const changeSubmitFormStatus = (status = false) => {
61
61
  setOK(status);
62
62
  };
63
63
 
@@ -94,10 +94,10 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
94
94
 
95
95
  const responseTypeDialog = useDialog(ResponseTypeDialog);
96
96
  useEffect(() => {
97
- if (ok !== undefined) {
97
+ if (ok === false) {
98
98
  responseTypeDialog.open({
99
99
  ok,
100
- onClose: () => changeSubmitFormStatus(undefined),
100
+ onClose: () => changeSubmitFormStatus(true),
101
101
  });
102
102
  }
103
103
  }, [ok]);