@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
@@ -1426,7 +1426,7 @@
1426
1426
 
1427
1427
  const usePopupManager = () => useEmitterWithActions(defaultEventBus.emitter, 'popup');
1428
1428
 
1429
- const filterOptions = (options, query, disableFilterOptions) => {
1429
+ const filterOptions = (options, query, disableFilterOptions = false) => {
1430
1430
  if (!options?.length || !query?.trim() || disableFilterOptions) {
1431
1431
  return options;
1432
1432
  }
@@ -3361,7 +3361,7 @@
3361
3361
  const codeWordValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length >= 3 && _.length <= 21 && codeWordPattern.test(_))(errorMsg ?? ERROR_MESSAGE);
3362
3362
  const nameRetailValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length > 1 && retailCyrillicPattern.test(_))(errorMsg ?? ERROR_MESSAGE);
3363
3363
  const jobNumberValidator = (errorMsg) => validator((_) => typeof _ === 'string' && /^[0-9]{1,2}$/g.test(_))(errorMsg ?? ERROR_MESSAGE);
3364
- const lengthStringValidator = (inputLength, errorMsg, isFixLength) => validator((_) => typeof _ === 'string' &&
3364
+ const lengthStringValidator = (inputLength, errorMsg, isFixLength = false) => validator((_) => typeof _ === 'string' &&
3365
3365
  _.length >= 1 &&
3366
3366
  (isFixLength ? _.length === inputLength : _.length <= inputLength))(errorMsg ?? ERROR_MESSAGE);
3367
3367
  const limitedBirthdayValidate = ({ minAge, maxAge }) => (date) => {
@@ -3413,8 +3413,8 @@
3413
3413
  }
3414
3414
  return false;
3415
3415
  });
3416
- const organizationNameValidator = (isDadataOrganization) => validator((_) => Boolean(_) && Boolean(isDadataOrganization))('Укажите наименование организации');
3417
- const organizationInnValidator = (isDadataOrganization) => validator((_) => isValidInnLength(_) && Boolean(isDadataOrganization))('Укажите ИНН');
3416
+ const organizationNameValidator = (isDadataOrganization = false) => validator((_) => Boolean(_) && Boolean(isDadataOrganization))('Укажите наименование организации');
3417
+ const organizationInnValidator = (isDadataOrganization = false) => validator((_) => isValidInnLength(_) && Boolean(isDadataOrganization))('Укажите ИНН');
3418
3418
 
3419
3419
  const limitedBirthdayValidationData = {
3420
3420
  credit: {
@@ -5079,8 +5079,8 @@
5079
5079
  return (jsx(RadioButtonGroupControl, { label: "\u0412\u0430\u043B\u044E\u0442\u0430", orientation: "horizontal", items: currencies, ...field(input?.name ?? '') }));
5080
5080
  });
5081
5081
 
5082
- const getDictionaries = (dictionaries, store) => {
5083
- Promise.all(Object.entries(dictionaries).map((dictionary) => {
5082
+ const getDictionaries = async (dictionaries, store) => {
5083
+ await Promise.all(Object.entries(dictionaries).map((dictionary) => {
5084
5084
  const [fieldName, dictionaryName] = dictionary;
5085
5085
  fetchRetailJSON(`/dictionary?dictionaryType=${encodeURIComponent(dictionaryName)}`, 'POST').then((res) => {
5086
5086
  store[fieldName] = res;
@@ -7081,7 +7081,7 @@
7081
7081
  useIFrameMode();
7082
7082
  const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
7083
7083
  const formValidator = useMemo(() => getFormValidator(inputs, extendedValidatorObj), [inputs, extendedValidatorObj]);
7084
- const changeSubmitFormStatus = (status) => {
7084
+ const changeSubmitFormStatus = (status = false) => {
7085
7085
  setOK(status);
7086
7086
  };
7087
7087
  const initialFormState = useInitApplicationLead({
@@ -7114,10 +7114,10 @@
7114
7114
  };
7115
7115
  const responseTypeDialog = useDialog(ResponseTypeDialog);
7116
7116
  useEffect(() => {
7117
- if (ok !== undefined) {
7117
+ if (ok === false) {
7118
7118
  responseTypeDialog.open({
7119
7119
  ok,
7120
- onClose: () => changeSubmitFormStatus(undefined),
7120
+ onClose: () => changeSubmitFormStatus(true),
7121
7121
  });
7122
7122
  }
7123
7123
  }, [ok]);
@@ -8497,6 +8497,174 @@
8497
8497
  return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [jsx(Img, { className: "self-center", image: icon }), title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, hiddenCells.length ? (jsxs(Foldable, { children: [jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isVisible, children: hiddenCells })] }), cardCells.length >= visibleCellsCount ? (jsx(DefaultFoldButton, { className: "mt-m", label: isVisible ? 'Скрыть' : 'Подробнее о тарифе', isUnfolded: isVisible, embedded: true, data: data, onClick: handleFold })) : null] })) : (jsx("div", { children: visibleCells }))] }));
8498
8498
  });
8499
8499
 
8500
+ const MAX_MONTH_CASHBACK = 5000;
8501
+ const MAX_YEAR_CASHBACK = 60000;
8502
+ const ResultText = JSX(({ text, value }) => (jsxs("div", { className: "space-y-xs w-full", children: [jsx(Text, { size: "text-m", color: "text-primary-text", font: "font-light", children: text }), jsx("div", { className: "w-full text-2xl bg-main-gray px-4 py-3 rounded-md", children: `${toLocalNumberFormat()(value)} ₽` })] })));
8503
+ const CashbackCalculatorResult = JSX(({ cashbacks }) => {
8504
+ const { mounth, year } = getResult(cashbacks);
8505
+ return (jsxs("div", { className: "w-full flex flex-col gap-lg", children: [jsx(Headline, { title: "\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0440\u0430\u0441\u0447\u0435\u0442\u0430", description: "\u041A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 \u043A\u0435\u0448\u0431\u044D\u043A\u0430 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E", headlineVersion: "XS", isEmbedded: true, align: "text-left" }), jsxs("div", { className: "flex flex-col @xs:flex-row gap-lg", children: [jsx(ResultText, { text: "\u0411\u0430\u043B\u043B\u043E\u0432 \u0432 \u043C\u0435\u0441\u044F\u0446", value: mounth }), jsx(ResultText, { text: "\u0411\u0430\u043B\u043B\u043E\u0432 \u0432 \u0433\u043E\u0434", value: year })] })] }));
8506
+ });
8507
+ const getResult = (cashbacks) => {
8508
+ return cashbacks.reduce((acc, val) => {
8509
+ const mounthSum = (Number(val.percent.key) / 100) * val.sum;
8510
+ return {
8511
+ mounth: Math.min(acc.mounth + mounthSum, MAX_MONTH_CASHBACK),
8512
+ year: Math.min(acc.year + mounthSum * 12, MAX_YEAR_CASHBACK),
8513
+ };
8514
+ }, {
8515
+ mounth: 0,
8516
+ year: 0,
8517
+ });
8518
+ };
8519
+
8520
+ const AllPercentCategories = [
8521
+ {
8522
+ text: 'Категория на кешбэк 1,5%',
8523
+ key: '1.5',
8524
+ },
8525
+ {
8526
+ text: 'Категория на кешбэк 3%',
8527
+ key: '3',
8528
+ },
8529
+ {
8530
+ text: 'Категория на кешбэк 5%',
8531
+ key: '5',
8532
+ },
8533
+ {
8534
+ text: 'Категория на кешбэк 10%',
8535
+ key: '10',
8536
+ },
8537
+ {
8538
+ text: 'Категория на кешбэк 15%',
8539
+ key: '15',
8540
+ },
8541
+ ];
8542
+ const PercentCategoriesWithoutIncreased = [
8543
+ {
8544
+ text: 'Категория на кешбэк 1,5%',
8545
+ key: '1.5',
8546
+ },
8547
+ {
8548
+ text: 'Категория на кешбэк 3%',
8549
+ key: '3',
8550
+ },
8551
+ ];
8552
+ const CashbackCategory = JSX(({ categories, cashback, showIncreasedPercents, maxInputRange, deleteImage, onDelete, onChange, }) => {
8553
+ const [currentCategory, setCurrentCategory] = useState(getRandomElement(categories));
8554
+ const isMainCashback = cashback.id === 0;
8555
+ const onChangePercent = (value) => {
8556
+ onChange({
8557
+ ...cashback,
8558
+ percent: value,
8559
+ });
8560
+ };
8561
+ const onChangeSum = (value) => {
8562
+ onChange({
8563
+ ...cashback,
8564
+ sum: value,
8565
+ });
8566
+ };
8567
+ return (jsxs("div", { className: "w-full space-y-m", children: [jsxs("div", { className: "space-y-xs", children: [jsx(Text, { size: "text-m", color: "text-primary-text", font: "font-light", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044E \u043A\u0435\u0448\u0431\u044D\u043A\u0430" }), jsxs("div", { className: "flex gap-m", children: [jsx(Select, { className: "w-full", isManualInput: isMainCashback, placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u044D\u0448\u0431\u044D\u043A", options: getPercentCategories(isMainCashback, showIncreasedPercents), value: cashback.percent, onChange: onChangePercent }), !isMainCashback ? (jsx(Button, { version: "secondary", onClick: () => onDelete(cashback.id), shape: "round", className: "px-4 rounded-md", children: jsx(Img, { image: deleteImage }) })) : null] })] }), categories?.length && !isMainCashback ? (jsx(Select, { label: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u043E\u0440\u0438\u044E", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u043E\u0440\u0438\u044E", options: categories, value: currentCategory, onChange: setCurrentCategory })) : null, jsx(InputRange, { step: 500, title: "\u0421\u0443\u043C\u043C\u0430 \u043F\u043E\u043A\u0443\u043F\u043E\u043A \u0432 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438", min: 0, max: maxInputRange, value: cashback.sum, onChange: onChangeSum })] }));
8568
+ });
8569
+ const getRandomElement = (arr) => arr?.[new Date().getTime().toString().slice(-1)];
8570
+ const getPercentCategories = (isMainCashback, showIncreasedPercents) => {
8571
+ if (isMainCashback) {
8572
+ return [];
8573
+ }
8574
+ else if (showIncreasedPercents) {
8575
+ return AllPercentCategories;
8576
+ }
8577
+ else {
8578
+ return PercentCategoriesWithoutIncreased;
8579
+ }
8580
+ };
8581
+
8582
+ const DEFAULT_MULTIPLE_CASHBACK = [
8583
+ {
8584
+ id: 0,
8585
+ percent: {
8586
+ text: 'Категория на кешбэк 1%',
8587
+ key: '1',
8588
+ },
8589
+ sum: 5000,
8590
+ },
8591
+ {
8592
+ id: 1,
8593
+ percent: {
8594
+ text: 'Категория на кешбэк 1,5%',
8595
+ key: '1.5',
8596
+ },
8597
+ sum: 5000,
8598
+ },
8599
+ {
8600
+ id: 2,
8601
+ percent: {
8602
+ text: 'Категория на кешбэк 1,5%',
8603
+ key: '1.5',
8604
+ },
8605
+ sum: 5000,
8606
+ },
8607
+ ];
8608
+ const DEFAULT_CASHBACK = [
8609
+ {
8610
+ id: 0,
8611
+ percent: {
8612
+ text: 'Категория на кешбэк 1%',
8613
+ key: '1',
8614
+ },
8615
+ sum: 5000,
8616
+ },
8617
+ ];
8618
+ const useCashbackCalculator = (isMultiple) => {
8619
+ const { data } = useLeadFormData('CASHBACK_CATEGORY');
8620
+ const [cashbacks, setCashbacks] = useState(isMultiple ? DEFAULT_MULTIPLE_CASHBACK : DEFAULT_CASHBACK);
8621
+ const categories = data?.map((_) => ({
8622
+ key: _.key || '',
8623
+ text: _.value,
8624
+ })) || [];
8625
+ const onAddNewCashback = () => setCashbacks((_) => [
8626
+ ..._,
8627
+ {
8628
+ id: _[_.length - 1].id + 1,
8629
+ percent: {
8630
+ text: 'Категория на кешбэк 1,5%',
8631
+ key: '1.5',
8632
+ },
8633
+ sum: 5000,
8634
+ },
8635
+ ]);
8636
+ const onChangeCashback = (item) => setCashbacks((prev) => prev.map((_) => {
8637
+ if (_.id === item.id) {
8638
+ return item;
8639
+ }
8640
+ return _;
8641
+ }));
8642
+ const onDeleteCashback = (id) => setCashbacks((prev) => prev.filter((_) => _.id !== id));
8643
+ const onResetCashback = () => setCashbacks(DEFAULT_CASHBACK);
8644
+ return {
8645
+ cashbacks,
8646
+ categories,
8647
+ onAddNewCashback,
8648
+ onChangeCashback,
8649
+ onDeleteCashback,
8650
+ onResetCashback,
8651
+ };
8652
+ };
8653
+
8654
+ const INCREASED_PERCENTS = ['5', '10', '15'];
8655
+ const MAX_CATEGORIES = 5;
8656
+ const INFO_BLOCK_HTML = `<p>Полученные баллы можно конвертировать в рубли и компенсировать покупки у партнеров. Подробнее в <a href='#docs'>документах</a></p>`;
8657
+ const CashbackCalculator = JSX(({ maxInputRange = 300000, image, deleteImage, infoImage, isMultiple = false, className = '', ...rest }) => {
8658
+ const { cashbacks, categories, onAddNewCashback, onChangeCashback, onDeleteCashback, onResetCashback, } = useCashbackCalculator(isMultiple);
8659
+ const img = image?.src ? (jsx(Img, { image: image, className: "hidden w-full @xl:block", imageClassName: "justify-self-center" })) : null;
8660
+ return (jsxs(BlockWrapper, { className: style('flex flex-col justify-center items-center gap-lg', className), defaultPadding: style('p-6xl'), ...rest, children: [jsx(Headline, { title: "\u041A\u0430\u043B\u044C\u043A\u0443\u043B\u044F\u0442\u043E\u0440 \u043A\u0435\u0448\u0431\u044D\u043A\u0430", description: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 5 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439 \u043A\u0435\u0448\u0431\u044D\u043A\u0430, \u0438 \u0432\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u0435 \u043E\u0431\u0449\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442 \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u043C\u043E\u0433\u043E \u043A\u0435\u0448\u0431\u044D\u043A\u0430", headlineVersion: "XL", isEmbedded: true }), jsxs("div", { className: "flex flex-row items-start gap-lg", children: [jsxs("div", { className: "w-full flex flex-col justify-center items-center gap-lg", children: [cashbacks.map((_) => (jsx(CashbackCategory, { categories: categories, cashback: _, showIncreasedPercents: showIncreasedPercents(_, cashbacks), maxInputRange: maxInputRange, deleteImage: deleteImage, onDelete: onDeleteCashback, onChange: onChangeCashback }, String(_.id)))), renderButtons(cashbacks.length, onAddNewCashback, onResetCashback), jsx(CashbackCalculatorResult, { cashbacks: cashbacks }), jsx(InfoCard, { __html: INFO_BLOCK_HTML, image: infoImage }), jsx(LinkButton, { className: "w-full @lg:w-auto self-start", href: "#zayavka", text: "\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u043A\u0430\u0440\u0442\u0443", version: "primary" })] }), img] })] }));
8661
+ });
8662
+ const renderButtons = (cashbacksLength, onAddNewCashback, onResetCashback) => {
8663
+ return (jsxs("div", { className: "w-full flex flex-col gap-lg", children: [cashbacksLength < MAX_CATEGORIES ? (jsx(Button, { className: "self-start text-primary-main", embedded: true, version: "secondary", onClick: onAddNewCashback, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0435\u0449\u0435" })) : null, cashbacksLength > 2 ? (jsx(Button, { className: "self-start", version: "secondary", onClick: onResetCashback, children: "\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438" })) : null] }));
8664
+ };
8665
+ const showIncreasedPercents = (currentCashback, cashback) => INCREASED_PERCENTS.includes(currentCashback.percent.key) ||
8666
+ !cashback.some((_) => INCREASED_PERCENTS.includes(_.percent.key));
8667
+
8500
8668
  const ContactsBlock = JSX(({ className, contacts, info, version = 'secondary', ...rest }) => (jsxs(BlockWrapper, { className: style('flex', className), defaultPadding: "p-6xl", version: version, ...rest, children: [info?.length ? renderBlocks(info) : null, contacts?.length ? renderBlocks(contacts) : null] })));
8501
8669
  const renderBlocks = (info) => (jsx("div", { className: "flex gap-5xl grow basis-0", children: info.map((column, i) => renderBlocksColumn({ column, i })) }));
8502
8670
  const renderBlocksColumn = ({ column, i }) => column ? (jsx("div", { className: "flex flex-col gap-xl grow basis-0", children: column.map(({ title = '', description, additionalDescription, button }, key) => (jsxs("div", { children: [jsx(Headline, { title: title, description: description, headlineVersion: "XS", align: "text-left", isEmbedded: true }), additionalDescription ? (jsx("div", { className: "mt-xs opacity-80", children: jsx(Paragraph, { size: "text-m", font: "font-light", children: additionalDescription }) })) : null, jsx("div", { className: style({ 'mt-xl': Boolean(button?.text) }), children: renderButtonsSection([button]) })] }, String(key)))) }, `col-${String(i)}`)) : null;
@@ -12301,6 +12469,7 @@
12301
12469
  CreditCardForm,
12302
12470
  CreditForm,
12303
12471
  DebitForm,
12472
+ CashbackCalculator,
12304
12473
  };
12305
12474
 
12306
12475
  const applyAspects = (aspects) => (ev) => {
@@ -12444,7 +12613,7 @@
12444
12613
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
12445
12614
  });
12446
12615
 
12447
- const packageVersion = "0.14.934";
12616
+ const packageVersion = "0.14.936";
12448
12617
 
12449
12618
  exports.Blocks = Blocks;
12450
12619
  exports.ContentPage = ContentPage;