@redneckz/wildless-cms-uni-blocks 0.14.1069 → 0.14.1071

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 (229) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +442 -297
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  5. package/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  6. package/bundle/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  7. package/bundle/components/CashbackCalculator/constants.d.ts +16 -0
  8. package/bundle/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  9. package/bundle/components/CashbackCalculator/renderButtons.d.ts +9 -0
  10. package/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  11. package/bundle/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  12. package/bundle/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  13. package/bundle/components/GalleryLayout/utils.d.ts +1 -0
  14. package/bundle/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  15. package/bundle/ui-kit/RichText/RichTextProps.d.ts +2 -0
  16. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +34 -22
  17. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  18. package/dist/components/Blocks.js +4 -2
  19. package/dist/components/Blocks.js.map +1 -1
  20. package/dist/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  21. package/dist/components/CashbackCalculator/CashbackCalculator.js +25 -14
  22. package/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -1
  23. package/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  24. package/dist/components/CashbackCalculator/CashbackCalculatorContent.js +0 -1
  25. package/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  26. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js +9 -11
  27. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -1
  28. package/dist/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  29. package/dist/components/CashbackCalculator/CashbackCategory.js +33 -54
  30. package/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -1
  31. package/dist/components/CashbackCalculator/constants.d.ts +16 -0
  32. package/dist/components/CashbackCalculator/constants.js +89 -0
  33. package/dist/components/CashbackCalculator/constants.js.map +1 -0
  34. package/dist/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  35. package/dist/components/CashbackCalculator/getPercentCategories.js +16 -0
  36. package/dist/components/CashbackCalculator/getPercentCategories.js.map +1 -0
  37. package/dist/components/CashbackCalculator/renderButtons.d.ts +9 -0
  38. package/dist/components/CashbackCalculator/renderButtons.js +10 -0
  39. package/dist/components/CashbackCalculator/renderButtons.js.map +1 -0
  40. package/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  41. package/dist/components/CashbackCalculator/useCashbackCalculator.js +17 -15
  42. package/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -1
  43. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  44. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js +56 -0
  45. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js.map +1 -0
  46. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  47. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js +2 -0
  48. package/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js.map +1 -0
  49. package/dist/components/GalleryLayout/utils.d.ts +1 -0
  50. package/dist/retail/api/createParticipant.js +1 -1
  51. package/dist/retail/api/createParticipant.js.map +1 -1
  52. package/dist/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  53. package/dist/ui-kit/RichText/RichText.js +2 -2
  54. package/dist/ui-kit/RichText/RichText.js.map +1 -1
  55. package/dist/ui-kit/RichText/RichTextProps.d.ts +2 -0
  56. package/lib/common.css +1 -1
  57. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +34 -22
  58. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  59. package/lib/components/Blocks.js +4 -2
  60. package/lib/components/Blocks.js.map +1 -1
  61. package/lib/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  62. package/lib/components/CashbackCalculator/CashbackCalculator.js +25 -14
  63. package/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -1
  64. package/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  65. package/lib/components/CashbackCalculator/CashbackCalculatorContent.js +0 -1
  66. package/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  67. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js +9 -11
  68. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -1
  69. package/lib/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  70. package/lib/components/CashbackCalculator/CashbackCategory.js +33 -54
  71. package/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -1
  72. package/lib/components/CashbackCalculator/constants.d.ts +16 -0
  73. package/lib/components/CashbackCalculator/constants.js +87 -0
  74. package/lib/components/CashbackCalculator/constants.js.map +1 -0
  75. package/lib/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  76. package/lib/components/CashbackCalculator/getPercentCategories.js +13 -0
  77. package/lib/components/CashbackCalculator/getPercentCategories.js.map +1 -0
  78. package/lib/components/CashbackCalculator/renderButtons.d.ts +9 -0
  79. package/lib/components/CashbackCalculator/renderButtons.js +7 -0
  80. package/lib/components/CashbackCalculator/renderButtons.js.map +1 -0
  81. package/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  82. package/lib/components/CashbackCalculator/useCashbackCalculator.js +18 -16
  83. package/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -1
  84. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  85. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.fixture.d.ts +5 -0
  86. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js +54 -0
  87. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js.map +1 -0
  88. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  89. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js +2 -0
  90. package/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js.map +1 -0
  91. package/lib/components/GalleryLayout/utils.d.ts +1 -0
  92. package/lib/retail/api/createParticipant.js +1 -1
  93. package/lib/retail/api/createParticipant.js.map +1 -1
  94. package/lib/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  95. package/lib/ui-kit/RichText/RichText.js +2 -2
  96. package/lib/ui-kit/RichText/RichText.js.map +1 -1
  97. package/lib/ui-kit/RichText/RichTextProps.d.ts +2 -0
  98. package/mobile/bundle/bundle.umd.js +188 -90
  99. package/mobile/bundle/bundle.umd.min.js +1 -1
  100. package/mobile/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  101. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  102. package/mobile/bundle/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  103. package/mobile/bundle/components/CashbackCalculator/constants.d.ts +16 -0
  104. package/mobile/bundle/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  105. package/mobile/bundle/components/CashbackCalculator/renderButtons.d.ts +9 -0
  106. package/mobile/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  107. package/mobile/bundle/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  108. package/mobile/bundle/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  109. package/mobile/bundle/components/GalleryLayout/utils.d.ts +1 -0
  110. package/mobile/bundle/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  111. package/mobile/bundle/ui-kit/RichText/RichTextProps.d.ts +2 -0
  112. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +34 -22
  113. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  114. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  115. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js +25 -14
  116. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -1
  117. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  118. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.js +0 -1
  119. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  120. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js +9 -11
  121. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -1
  122. package/mobile/dist/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  123. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js +33 -54
  124. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -1
  125. package/mobile/dist/components/CashbackCalculator/constants.d.ts +16 -0
  126. package/mobile/dist/components/CashbackCalculator/constants.js +89 -0
  127. package/mobile/dist/components/CashbackCalculator/constants.js.map +1 -0
  128. package/mobile/dist/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  129. package/mobile/dist/components/CashbackCalculator/getPercentCategories.js +16 -0
  130. package/mobile/dist/components/CashbackCalculator/getPercentCategories.js.map +1 -0
  131. package/mobile/dist/components/CashbackCalculator/renderButtons.d.ts +9 -0
  132. package/mobile/dist/components/CashbackCalculator/renderButtons.js +10 -0
  133. package/mobile/dist/components/CashbackCalculator/renderButtons.js.map +1 -0
  134. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  135. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js +17 -15
  136. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -1
  137. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  138. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js +56 -0
  139. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js.map +1 -0
  140. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  141. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js +2 -0
  142. package/mobile/dist/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js.map +1 -0
  143. package/mobile/dist/components/GalleryLayout/utils.d.ts +1 -0
  144. package/mobile/dist/retail/api/createParticipant.js +1 -1
  145. package/mobile/dist/retail/api/createParticipant.js.map +1 -1
  146. package/mobile/dist/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  147. package/mobile/dist/ui-kit/RichText/RichText.js +2 -2
  148. package/mobile/dist/ui-kit/RichText/RichText.js.map +1 -1
  149. package/mobile/dist/ui-kit/RichText/RichTextProps.d.ts +2 -0
  150. package/mobile/lib/common.css +1 -1
  151. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +34 -22
  152. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  153. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.d.ts +7 -2
  154. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js +25 -14
  155. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -1
  156. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  157. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.js +0 -1
  158. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +2 -1
  159. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js +9 -11
  160. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -1
  161. package/mobile/lib/components/CashbackCalculator/CashbackCategory.d.ts +6 -2
  162. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js +33 -54
  163. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -1
  164. package/mobile/lib/components/CashbackCalculator/constants.d.ts +16 -0
  165. package/mobile/lib/components/CashbackCalculator/constants.js +87 -0
  166. package/mobile/lib/components/CashbackCalculator/constants.js.map +1 -0
  167. package/mobile/lib/components/CashbackCalculator/getPercentCategories.d.ts +1 -0
  168. package/mobile/lib/components/CashbackCalculator/getPercentCategories.js +13 -0
  169. package/mobile/lib/components/CashbackCalculator/getPercentCategories.js.map +1 -0
  170. package/mobile/lib/components/CashbackCalculator/renderButtons.d.ts +9 -0
  171. package/mobile/lib/components/CashbackCalculator/renderButtons.js +7 -0
  172. package/mobile/lib/components/CashbackCalculator/renderButtons.js.map +1 -0
  173. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +4 -2
  174. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js +18 -16
  175. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -1
  176. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.d.ts +6 -0
  177. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js +54 -0
  178. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayout.js.map +1 -0
  179. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.d.ts +38 -0
  180. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js +2 -0
  181. package/mobile/lib/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.js.map +1 -0
  182. package/mobile/lib/components/GalleryLayout/utils.d.ts +1 -0
  183. package/mobile/lib/retail/api/createParticipant.js +1 -1
  184. package/mobile/lib/retail/api/createParticipant.js.map +1 -1
  185. package/mobile/lib/retail/model/ApplicationLeadFormTypes.d.ts +1 -1
  186. package/mobile/lib/ui-kit/RichText/RichText.js +2 -2
  187. package/mobile/lib/ui-kit/RichText/RichText.js.map +1 -1
  188. package/mobile/lib/ui-kit/RichText/RichTextProps.d.ts +2 -0
  189. package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +47 -28
  190. package/mobile/src/components/CashbackCalculator/CashbackCalculator.tsx +73 -69
  191. package/mobile/src/components/CashbackCalculator/CashbackCalculatorContent.ts +0 -28
  192. package/mobile/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +23 -23
  193. package/mobile/src/components/CashbackCalculator/CashbackCategory.tsx +69 -71
  194. package/mobile/src/components/CashbackCalculator/constants.ts +97 -0
  195. package/mobile/src/components/CashbackCalculator/getPercentCategories.ts +24 -0
  196. package/mobile/src/components/CashbackCalculator/renderButtons.tsx +38 -0
  197. package/mobile/src/components/CashbackCalculator/useCashbackCalculator.ts +26 -17
  198. package/mobile/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.example.json +47 -0
  199. package/mobile/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.tsx +116 -0
  200. package/{src/components/CashbackCalculator/CashbackCalculator.ui.json → mobile/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.ui.json} +6 -0
  201. package/mobile/src/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.ts +49 -0
  202. package/mobile/src/retail/api/createParticipant.ts +1 -1
  203. package/mobile/src/retail/model/ApplicationLeadFormTypes.ts +1 -1
  204. package/mobile/src/ui-kit/RichText/RichText.tsx +9 -1
  205. package/mobile/src/ui-kit/RichText/RichTextProps.ts +2 -0
  206. package/package.json +2 -2
  207. package/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +47 -28
  208. package/src/components/Blocks.ts +4 -2
  209. package/src/components/CashbackCalculator/CashbackCalculator.tsx +73 -69
  210. package/src/components/CashbackCalculator/CashbackCalculatorContent.ts +0 -28
  211. package/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +23 -23
  212. package/src/components/CashbackCalculator/CashbackCategory.tsx +69 -71
  213. package/src/components/CashbackCalculator/constants.ts +97 -0
  214. package/src/components/CashbackCalculator/getPercentCategories.ts +24 -0
  215. package/src/components/CashbackCalculator/renderButtons.tsx +38 -0
  216. package/src/components/CashbackCalculator/useCashbackCalculator.ts +26 -17
  217. package/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.example.json +47 -0
  218. package/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.fixture.tsx +61 -0
  219. package/src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.tsx +116 -0
  220. package/{mobile/src/components/CashbackCalculator/CashbackCalculator.ui.json → src/components/CashbackCalculatorLayout/CashbackCalculatorLayout.ui.json} +6 -0
  221. package/src/components/CashbackCalculatorLayout/CashbackCalculatorLayoutContent.ts +49 -0
  222. package/src/retail/api/createParticipant.ts +1 -1
  223. package/src/retail/model/ApplicationLeadFormTypes.ts +1 -1
  224. package/src/ui-kit/RichText/RichText.tsx +9 -1
  225. package/src/ui-kit/RichText/RichTextProps.ts +2 -0
  226. package/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  227. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +0 -25
  228. package/mobile/src/components/CashbackCalculator/CashbackCalculator.example.json +0 -1
  229. package/src/components/CashbackCalculator/CashbackCalculator.example.json +0 -1
@@ -152,26 +152,11 @@ export const useApplicationLeadApi = ({
152
152
  try {
153
153
  startSending();
154
154
  const transformedFormData = transformFormData(formData);
155
- const participantData = await createParticipant({
156
- phone: formatPhone(transformedFormData.phone as string),
157
- email: transformedFormData.email as string,
158
- });
159
-
160
155
  const referalData = leadFormStore.referalData;
161
156
  const marketingInfo = sessionStore.marketingInfo;
162
157
 
163
- if (!participantData) {
164
- throw new Error();
165
- }
166
-
167
- const { participantId, userId } = participantData;
168
-
169
- if (!participantId) {
170
- throw new Error();
171
- }
172
158
  const common: CommonLeadProps = {
173
159
  programId,
174
- userId,
175
160
  productType,
176
161
  sendAspects,
177
162
  verifyPhoneDialog,
@@ -179,23 +164,17 @@ export const useApplicationLeadApi = ({
179
164
  };
180
165
 
181
166
  const taskData: TaskDataProps = {
182
- participantId,
183
167
  formData: transformedFormData,
184
168
  referalData,
185
169
  marketingInfo,
186
170
  saveUserData,
187
171
  };
188
172
 
189
- const sendCurrentTask = createSendCurrentTaskNew({
190
- common,
191
- taskData,
192
- consentBkiDialog,
193
- });
194
-
195
173
  const handleSuccessVerify = createHandleSuccessVerifyNew({
196
174
  common,
175
+ taskData,
197
176
  draftDialog,
198
- sendCurrentTask,
177
+ consentBkiDialog,
199
178
  });
200
179
 
201
180
  const acceptedConsents = getAcceptedConsents(transformedFormData, productType);
@@ -233,6 +212,11 @@ const createSendCurrentTaskNew =
233
212
  const { programId, userId, productType, sendAspects, verifyPhoneDialog, handleFailSendForm } =
234
213
  common;
235
214
  const { participantId, formData, referalData, marketingInfo, saveUserData } = taskData;
215
+
216
+ if (!participantId) {
217
+ throw new Error();
218
+ }
219
+
236
220
  const taskId = await updateUserDataNewMicroservice({
237
221
  programId,
238
222
  participantId,
@@ -257,17 +241,51 @@ const createSendCurrentTaskNew =
257
241
  const createHandleSuccessVerifyNew =
258
242
  ({
259
243
  common,
244
+ taskData,
260
245
  draftDialog,
261
- sendCurrentTask,
246
+ consentBkiDialog,
262
247
  }: {
263
248
  common: CommonLeadProps;
249
+ taskData: TaskDataProps;
264
250
  draftDialog: any;
265
- sendCurrentTask: () => Promise<void>;
251
+ consentBkiDialog: ReturnType<typeof useConsentBkiDialog>;
266
252
  }) =>
267
253
  async () => {
268
- const { verifyPhoneDialog, sendAspects, handleFailSendForm, userId, programId, productType } =
269
- common;
254
+ const { programId, productType, sendAspects, verifyPhoneDialog, handleFailSendForm } = common;
255
+ const { formData } = taskData;
256
+
270
257
  try {
258
+ const participantData = await createParticipant({
259
+ phone: formatPhone(formData.phone as string),
260
+ email: formData.email as string,
261
+ });
262
+
263
+ if (!participantData) {
264
+ throw new Error();
265
+ }
266
+
267
+ const { participantId, userId } = participantData;
268
+
269
+ if (!participantId) {
270
+ throw new Error();
271
+ }
272
+
273
+ const updatedCommon: CommonLeadProps = {
274
+ ...common,
275
+ userId,
276
+ };
277
+
278
+ const updatedTaskData: TaskDataProps = {
279
+ ...taskData,
280
+ participantId,
281
+ };
282
+
283
+ const sendCurrentTask = createSendCurrentTaskNew({
284
+ common: updatedCommon,
285
+ taskData: updatedTaskData,
286
+ consentBkiDialog,
287
+ });
288
+
271
289
  const lastTaskId = await getLastTaskStatus({ userId, programId });
272
290
 
273
291
  if (lastTaskId) {
@@ -283,7 +301,8 @@ const createHandleSuccessVerifyNew =
283
301
  } else {
284
302
  await sendCurrentTask();
285
303
  }
286
- } catch {
304
+ } catch (error) {
305
+ console.error('Error in handleSuccessVerify:', error);
287
306
  handleFailSendForm();
288
307
  }
289
308
  };
@@ -1,16 +1,24 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type Picture } from '../../model/Picture';
2
4
  import { BlockWrapper } from '../../ui-kit/BlockWrapper';
3
- import { Button } from '../../ui-kit/Button/Button';
4
5
  import { Img } from '../../ui-kit/Img/Img';
5
6
  import { InfoCard } from '../../ui-kit/InfoCard/InfoCard';
6
7
  import { LinkButton } from '../../ui-kit/LinkButton/LinkButton';
7
- import { type LinkButtonContent } from '../../ui-kit/LinkButton/LinkButtonContent';
8
+ import type { LinkButtonContent } from '../../ui-kit/LinkButton/LinkButtonContent';
9
+ import { RichText } from '../../ui-kit/RichText/RichText';
10
+ import { type Option } from '../../ui-kit/Select/Option';
11
+ import { Text } from '../../ui-kit/Text/Text';
8
12
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
9
13
  import { style } from '../../utils/style';
10
- import { Headline } from '../Headline/Headline';
11
- import { type Cashback, type CashbackCalculatorContent } from './CashbackCalculatorContent';
14
+ import {
15
+ type CalculatorParams,
16
+ type CashbackCalculatorLayoutContent,
17
+ } from '../CashbackCalculatorLayout/CashbackCalculatorLayoutContent';
12
18
  import { CashbackCalculatorResult } from './CashbackCalculatorResult';
13
19
  import { CashbackCategory } from './CashbackCategory';
20
+ import { INFO_BLOCK_HTML, MAIN_CASHBACK_KEY, MAX_MONTH_CASHBACK } from './constants';
21
+ import { renderButtons } from './renderButtons';
14
22
  import { useCashbackCalculator } from './useCashbackCalculator';
15
23
 
16
24
  const defaultButton: LinkButtonContent = {
@@ -19,22 +27,25 @@ const defaultButton: LinkButtonContent = {
19
27
  target: '_self',
20
28
  };
21
29
 
22
- const INCREASED_PERCENTS = ['5', '10', '15'];
30
+ interface CashbackCalculatorProps
31
+ extends CalculatorParams,
32
+ CashbackCalculatorLayoutContent,
33
+ UniBlockProps {}
23
34
 
24
- const MAX_CATEGORIES = 5;
25
-
26
- const INFO_BLOCK_HTML = `<p>Полученные баллы можно конвертировать в рубли и компенсировать покупки у партнеров. Подробнее в <a href='#docs'>документах</a></p>`;
27
-
28
- interface CashbackCalculatorProps extends CashbackCalculatorContent, UniBlockProps {}
35
+ export type SelectedCategory = {
36
+ id: number;
37
+ category: Option;
38
+ };
29
39
 
30
40
  export const CashbackCalculator = JSX<CashbackCalculatorProps>(
41
+ // eslint-disable-next-line max-lines-per-function
31
42
  ({
32
43
  maxInputRange = 300000,
33
- image,
34
- deleteImage,
35
- infoImage,
36
- className = '',
44
+ maxCategories,
45
+ calculatorType = 'standard',
46
+ maxMonthCashback = MAX_MONTH_CASHBACK[calculatorType],
37
47
  button = defaultButton,
48
+ className = '',
38
49
  ...rest
39
50
  }) => {
40
51
  const {
@@ -44,41 +55,53 @@ export const CashbackCalculator = JSX<CashbackCalculatorProps>(
44
55
  onChangeCashback,
45
56
  onDeleteCashback,
46
57
  onResetCashback,
47
- } = useCashbackCalculator();
58
+ onChangeCategory,
59
+ } = useCashbackCalculator(calculatorType);
60
+
61
+ const { deleteImage, infoImage, image } = rest;
62
+ const [isMainCashbackAdded, setIsMainCashbackAdded] = useState(false);
48
63
 
49
- const img = image?.src ? (
50
- <Img image={image} className="hidden w-full @xl:block" imageClassName="justify-self-center" />
51
- ) : null;
64
+ useEffect(() => {
65
+ setIsMainCashbackAdded(
66
+ Boolean(cashbacks.find((item) => item.percent.key === MAIN_CASHBACK_KEY[calculatorType])),
67
+ );
68
+ }, [cashbacks]);
52
69
 
53
70
  return (
54
71
  <BlockWrapper
55
72
  className={style('flex flex-col justify-center items-center gap-lg', className)}
56
- defaultPadding={style('p-6xl')}
73
+ defaultPadding={style('p-0')}
57
74
  {...rest}
58
75
  >
59
- <Headline
60
- title="Калькулятор расчета баллов"
61
- description="Можно выбрать не более 5 категорий, одна из них из повышенной категории"
62
- headlineVersion="XL"
63
- isEmbedded={true}
64
- />
65
- <div className="flex flex-row items-start gap-lg">
76
+ <div className="flex flex-row items-start gap-lg mt-5">
66
77
  <div className="w-full flex flex-col justify-center items-center gap-lg">
67
- {cashbacks.map((_) => (
68
- <CashbackCategory
69
- key={String(_.id)}
70
- categories={categories}
71
- cashback={_}
72
- showIncreasedPercents={showIncreasedPercents(_, cashbacks)}
73
- maxInputRange={maxInputRange}
74
- deleteImage={deleteImage}
75
- onDelete={onDeleteCashback}
76
- onChange={onChangeCashback}
77
- />
78
- ))}
79
- {renderButtons(cashbacks.length, onAddNewCashback, onResetCashback)}
80
- <CashbackCalculatorResult cashbacks={cashbacks} />
78
+ {cashbacks.length
79
+ ? cashbacks.map((_, index) => (
80
+ <CashbackCategory
81
+ key={String(_.id)}
82
+ categories={categories}
83
+ cashback={_}
84
+ maxInputRange={maxInputRange}
85
+ deleteImage={deleteImage}
86
+ onDelete={onDeleteCashback}
87
+ onChange={onChangeCashback}
88
+ isMainCashbackAdded={isMainCashbackAdded}
89
+ calculatorType={calculatorType}
90
+ isShowDisclaimer={index === 0}
91
+ onChangeCategory={onChangeCategory}
92
+ />
93
+ ))
94
+ : renderNoCategoryText()}
95
+ {renderButtons({
96
+ cashbacksLength: cashbacks.length,
97
+ onAddNewCashback: onAddNewCashback,
98
+ onResetCashback: onResetCashback,
99
+ calculatorType: calculatorType,
100
+ maxCategories,
101
+ })}
102
+ <CashbackCalculatorResult cashbacks={cashbacks} maxMonthCashback={maxMonthCashback} />
81
103
  <InfoCard __html={INFO_BLOCK_HTML} image={infoImage} />
104
+ <RichText __html='* Подробнее по условиям и начислениям можно узнать во вкладке <a href="#docs">документы</a>' />
82
105
  <LinkButton
83
106
  className="w-full @lg:w-auto self-start"
84
107
  href={button.href}
@@ -87,39 +110,20 @@ export const CashbackCalculator = JSX<CashbackCalculatorProps>(
87
110
  version="primary"
88
111
  />
89
112
  </div>
90
- {img}
113
+ {renderImage(image)}
91
114
  </div>
92
115
  </BlockWrapper>
93
116
  );
94
117
  },
95
118
  );
96
119
 
97
- const renderButtons = (
98
- cashbacksLength: number,
99
- onAddNewCashback: () => void,
100
- onResetCashback: () => void,
101
- ) => {
102
- return (
103
- <div className="w-full flex flex-col gap-lg">
104
- {cashbacksLength < MAX_CATEGORIES ? (
105
- <Button
106
- className="self-start text-primary-main"
107
- embedded
108
- version="secondary"
109
- onClick={onAddNewCashback}
110
- >
111
- Добавить еще
112
- </Button>
113
- ) : null}
114
- {cashbacksLength > 2 ? (
115
- <Button className="self-start" version="secondary" onClick={onResetCashback}>
116
- Сбросить все категории
117
- </Button>
118
- ) : null}
119
- </div>
120
- );
121
- };
120
+ const renderNoCategoryText = () => (
121
+ <Text align="text-left" className="w-full">
122
+ Категория не выбрана
123
+ </Text>
124
+ );
122
125
 
123
- const showIncreasedPercents = (currentCashback: Cashback, cashback: Cashback[]) =>
124
- INCREASED_PERCENTS.includes(currentCashback.percent.key) ||
125
- !cashback.some((_) => INCREASED_PERCENTS.includes(_.percent.key));
126
+ const renderImage = (image: Picture = {}) =>
127
+ image?.src ? (
128
+ <Img image={image} className="hidden w-full @xl:block" imageClassName="justify-self-center" />
129
+ ) : null;
@@ -1,28 +0,0 @@
1
- import { type TitleProps } from '../../model/HeadlineType';
2
- import { type Picture } from '../../model/Picture';
3
- import { type LinkButtonContent } from '../../ui-kit/LinkButton/LinkButtonContent';
4
- import { type Option } from '../../ui-kit/Select/Option';
5
- import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
6
-
7
- export type Cashback = {
8
- id: number;
9
- percent: Option;
10
- sum: number;
11
- };
12
-
13
- /**
14
- * @title Блок калькулятора кэшбека
15
- */
16
- export type CashbackCalculatorContent = UniBlockContent &
17
- TitleProps & {
18
- /** @title Кнопка */
19
- button?: LinkButtonContent;
20
- /** @title Максимальное значение поля 'Сумма покупок в категории' */
21
- maxInputRange?: number;
22
- /** @title Изображение */
23
- image?: Picture;
24
- /** @title Иконка кнопки удаления категории */
25
- deleteImage?: Picture;
26
- /** @title Иконка информационного блока */
27
- infoImage?: Picture;
28
- };
@@ -1,16 +1,13 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { Heading } from '../../ui-kit/Heading/Heading';
3
- import { RichText } from '../../ui-kit/RichText/RichText';
4
3
  import { Text } from '../../ui-kit/Text/Text';
5
4
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
6
5
  import { toLocalNumberFormat } from '../../utils/toLocalNumberFormat';
7
- import { type Cashback } from './CashbackCalculatorContent';
8
-
9
- const MAX_MONTH_CASHBACK = 5000;
10
- const MAX_YEAR_CASHBACK = 60000;
6
+ import { type Cashback } from '../CashbackCalculatorLayout/CashbackCalculatorLayoutContent';
11
7
 
12
8
  export type CashbackCalculatorResultProps = UniBlockProps & {
13
9
  cashbacks: Cashback[];
10
+ maxMonthCashback: number;
14
11
  };
15
12
 
16
13
  type ResultTextProps = {
@@ -29,34 +26,37 @@ const ResultText = JSX<ResultTextProps>(({ text, value }) => (
29
26
  </div>
30
27
  ));
31
28
 
32
- export const CashbackCalculatorResult = JSX<CashbackCalculatorResultProps>(({ cashbacks }) => {
33
- const { mounth, year } = getResult(cashbacks);
34
-
35
- return (
36
- <div className="w-full flex flex-col gap-lg">
37
- <Heading className="text-left" headingType="h5" as="h2" title="Результат расчета" />
38
- <RichText __html='Категории покупок для расчета баллов предварительные.<br />Подробнее по условиям и начислениям можно узнать во вкладке <a href="#docs">документы</a>' />
39
- <div className="flex flex-col @xs:flex-row gap-lg">
40
- <ResultText text="Баллов в месяц" value={mounth} />
41
- <ResultText text="Баллов в год" value={year} />
29
+ export const CashbackCalculatorResult = JSX<CashbackCalculatorResultProps>(
30
+ ({ cashbacks, maxMonthCashback }) => {
31
+ const { month, year } = getResult(cashbacks, maxMonthCashback);
32
+
33
+ return (
34
+ <div className="w-full flex flex-col gap-lg">
35
+ <Heading className="text-left" headingType="h5" as="h2" title="Результат расчета" />
36
+ <div className="flex flex-col @xs:flex-row gap-lg">
37
+ <ResultText text="Баллов в месяц" value={month} />
38
+ <ResultText text="Баллов в год" value={year} />
39
+ </div>
42
40
  </div>
43
- </div>
44
- );
45
- });
41
+ );
42
+ },
43
+ );
46
44
 
47
- const getResult = (cashbacks: Cashback[]) => {
45
+ const getResult = (cashbacks: Cashback[], maxMonthCashback: number) => {
48
46
  return cashbacks.reduce(
49
47
  (acc, val) => {
50
- const mounthSum = (Number(val.percent.key) / 100) * val.sum;
48
+ const mounthSum = (formatKey(val.percent.key) / 100) * val.sum;
51
49
 
52
50
  return {
53
- mounth: Math.min(acc.mounth + mounthSum, MAX_MONTH_CASHBACK),
54
- year: Math.min(acc.year + mounthSum * 12, MAX_YEAR_CASHBACK),
51
+ month: Math.min(acc.month + mounthSum, maxMonthCashback),
52
+ year: Math.min(acc.year + mounthSum * 12, maxMonthCashback * 12),
55
53
  };
56
54
  },
57
55
  {
58
- mounth: 0,
56
+ month: 0,
59
57
  year: 0,
60
58
  },
61
59
  );
62
60
  };
61
+
62
+ const formatKey = (key: string) => Number(key.replace('-main', ''));
@@ -4,107 +4,88 @@ import { type Picture } from '../../model/Picture';
4
4
  import { Button } from '../../ui-kit/Button/Button';
5
5
  import { Img } from '../../ui-kit/Img/Img';
6
6
  import { InputRange } from '../../ui-kit/InputRange/InputRange';
7
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
7
8
  import { type Option } from '../../ui-kit/Select/Option';
8
9
  import { Select } from '../../ui-kit/Select/Select';
9
10
  import { Text } from '../../ui-kit/Text/Text';
10
11
  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
- ];
12
+ import { noop } from '../../utils/noop';
13
+ import { type Cashback } from '../CashbackCalculatorLayout/CashbackCalculatorLayoutContent';
14
+ import { type SelectedCategory } from './CashbackCalculator';
15
+ import { MAIN_CASHBACK_KEY } from './constants';
16
+ import { getPercentCategories } from './getPercentCategories';
46
17
 
47
18
  export interface CashbackCategoryProps extends UniBlockProps {
48
19
  categories?: Option[];
49
20
  cashback: Cashback;
50
- showIncreasedPercents: boolean;
51
21
  maxInputRange: number;
52
22
  deleteImage?: Picture;
53
23
  onDelete: (id: number) => void;
54
24
  onChange: (item: Cashback) => void;
25
+ isMainCashbackAdded?: boolean;
26
+ calculatorType?: string;
27
+ isShowDisclaimer?: boolean;
28
+ onChangeCategory: (item: (prev: SelectedCategory[]) => any) => void;
55
29
  }
56
30
 
31
+ const defaultDeleteImage: Picture = {
32
+ src: 'IconDelete.svg',
33
+ format: 'webp',
34
+ alt: 'Иконка кнопки удаления блока кэшбека',
35
+ };
36
+
57
37
  export const CashbackCategory = JSX<CashbackCategoryProps>(
58
38
  ({
59
39
  categories,
60
40
  cashback,
61
- showIncreasedPercents,
62
41
  maxInputRange,
63
- deleteImage,
42
+ deleteImage = defaultDeleteImage,
43
+ isMainCashbackAdded = false,
44
+ calculatorType = 'standard',
64
45
  onDelete,
65
46
  onChange,
47
+ isShowDisclaimer = false,
48
+ onChangeCategory = noop,
66
49
  }) => {
67
50
  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
- };
51
+ const isMainCashback = cashback.percent.key === MAIN_CASHBACK_KEY[calculatorType];
52
+
53
+ const onChangePercent = createChangeHandler(cashback, 'percent', onChange);
54
+ const onChangeSum = createChangeHandler(cashback, 'sum', onChange);
75
55
 
76
- const onChangeSum = (value: number) => {
77
- onChange({
78
- ...cashback,
79
- sum: value,
80
- });
56
+ const onChangeCashbackCategory = (value: Option) => {
57
+ setCurrentCategory(value);
58
+ onChangeCategory((prev) => updateSelectedCategories(prev, cashback, value));
81
59
  };
82
60
 
83
61
  return (
84
62
  <div className="w-full space-y-m">
85
63
  <div className="space-y-xs">
86
- <Text size="text-m" color="text-primary-text" font="font-light">
64
+ <Paragraph size="text-m" color="text-primary-text" font="font-light">
87
65
  Выберите категорию
88
- </Text>
66
+ </Paragraph>
67
+ {isShowDisclaimer ? (
68
+ <Text size="text-s" color="text-primary-text" font="font-light" className="italic">
69
+ Категории покупок для расчёта баллов предварительные
70
+ </Text>
71
+ ) : null}
89
72
  <div className="flex gap-m">
90
73
  <Select
91
74
  className="w-full"
92
75
  isManualInput={isMainCashback}
93
76
  placeholder="Выберите категорию"
94
- options={getPercentCategories(isMainCashback, showIncreasedPercents)}
77
+ options={getPercentCategories(isMainCashbackAdded, calculatorType)}
95
78
  value={cashback.percent}
96
79
  onChange={onChangePercent}
97
80
  />
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}
81
+ <Button
82
+ version="secondary"
83
+ onClick={() => onDelete(cashback.id)}
84
+ shape="round"
85
+ className="px-4 rounded-md"
86
+ >
87
+ <Img image={deleteImage} />
88
+ </Button>
108
89
  </div>
109
90
  </div>
110
91
  {categories?.length && !isMainCashback ? (
@@ -113,7 +94,7 @@ export const CashbackCategory = JSX<CashbackCategoryProps>(
113
94
  placeholder="Выберите категорию покупок"
114
95
  options={categories}
115
96
  value={currentCategory}
116
- onChange={setCurrentCategory}
97
+ onChange={onChangeCashbackCategory}
117
98
  />
118
99
  ) : null}
119
100
  <InputRange
@@ -132,12 +113,29 @@ export const CashbackCategory = JSX<CashbackCategoryProps>(
132
113
  const getRandomElement = <T,>(arr?: T[]): T | undefined =>
133
114
  arr?.[new Date().getTime().toString().slice(-1)];
134
115
 
135
- const getPercentCategories = (isMainCashback: boolean, showIncreasedPercents: boolean) => {
136
- if (isMainCashback) {
137
- return [];
138
- } else if (showIncreasedPercents) {
139
- return AllPercentCategories;
140
- } else {
141
- return PercentCategoriesWithoutIncreased;
116
+ const createChangeHandler =
117
+ <T, K extends keyof T>(obj: T, field: K, onChange: (value: T) => void) =>
118
+ (value: T[K]) => {
119
+ onChange({
120
+ ...obj,
121
+ [field]: value,
122
+ });
123
+ };
124
+
125
+ const updateSelectedCategories = (prev: SelectedCategory[], cashback: Cashback, value: Option) => {
126
+ const newItem = { id: cashback.id, category: value };
127
+
128
+ if (prev.length === 0) {
129
+ return [newItem];
142
130
  }
131
+ const index = prev.findIndex((item) => item.id === cashback.id);
132
+
133
+ if (index !== -1) {
134
+ const updated = [...prev];
135
+ updated[index] = newItem;
136
+
137
+ return updated;
138
+ }
139
+
140
+ return [...prev, newItem];
143
141
  };