@redneckz/wildless-cms-uni-blocks 0.14.660 → 0.14.661

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 (144) hide show
  1. package/bundle/api/RetailAPI/getTaskStatus.d.ts +3 -3
  2. package/bundle/bundle.umd.js +37 -21
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CreditForm/CreditFormStatus.d.ts +1 -0
  5. package/bundle/components/CreditForm/PendingStatusContent.d.ts +3 -1
  6. package/bundle/ui-kit/FormField/validators.d.ts +1 -0
  7. package/bundle/ui-kit/TimerCircle/Timer.d.ts +1 -2
  8. package/bundle/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  9. package/dist/api/RetailAPI/getTaskStatus.d.ts +3 -3
  10. package/dist/api/RetailAPI/getTaskStatus.js +3 -3
  11. package/dist/api/RetailAPI/getTaskStatus.js.map +1 -1
  12. package/dist/components/CreditCardForm/CreditCardFormStatusTracker.js +3 -3
  13. package/dist/components/CreditCardForm/CreditCardFormStatusTracker.js.map +1 -1
  14. package/dist/components/CreditCardForm/calculateInputs.js +2 -0
  15. package/dist/components/CreditCardForm/calculateInputs.js.map +1 -1
  16. package/dist/components/CreditForm/CreditFormStatus.d.ts +1 -0
  17. package/dist/components/CreditForm/CreditFormStatus.js +7 -3
  18. package/dist/components/CreditForm/CreditFormStatus.js.map +1 -1
  19. package/dist/components/CreditForm/CreditFormStatusTracker.js +7 -6
  20. package/dist/components/CreditForm/CreditFormStatusTracker.js.map +1 -1
  21. package/dist/components/CreditForm/PendingStatusContent.d.ts +3 -1
  22. package/dist/components/CreditForm/PendingStatusContent.js +2 -2
  23. package/dist/components/CreditForm/PendingStatusContent.js.map +1 -1
  24. package/dist/components/CreditForm/calculateInputs.js +2 -0
  25. package/dist/components/CreditForm/calculateInputs.js.map +1 -1
  26. package/dist/ui-kit/FormField/getObjectValidator.js +1 -1
  27. package/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  28. package/dist/ui-kit/FormField/validators.d.ts +1 -0
  29. package/dist/ui-kit/FormField/validators.js +3 -1
  30. package/dist/ui-kit/FormField/validators.js.map +1 -1
  31. package/dist/ui-kit/TimerCircle/Timer.d.ts +1 -2
  32. package/dist/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  33. package/dist/ui-kit/TimerCircle/TimerCircle.js +8 -2
  34. package/dist/ui-kit/TimerCircle/TimerCircle.js.map +1 -1
  35. package/lib/api/RetailAPI/getTaskStatus.d.ts +3 -3
  36. package/lib/api/RetailAPI/getTaskStatus.js +3 -3
  37. package/lib/api/RetailAPI/getTaskStatus.js.map +1 -1
  38. package/lib/components/CreditCardForm/CreditCardFormStatusTracker.js +3 -3
  39. package/lib/components/CreditCardForm/CreditCardFormStatusTracker.js.map +1 -1
  40. package/lib/components/CreditCardForm/calculateInputs.js +2 -0
  41. package/lib/components/CreditCardForm/calculateInputs.js.map +1 -1
  42. package/lib/components/CreditForm/CreditFormStatus.d.ts +1 -0
  43. package/lib/components/CreditForm/CreditFormStatus.js +7 -3
  44. package/lib/components/CreditForm/CreditFormStatus.js.map +1 -1
  45. package/lib/components/CreditForm/CreditFormStatusTracker.js +7 -6
  46. package/lib/components/CreditForm/CreditFormStatusTracker.js.map +1 -1
  47. package/lib/components/CreditForm/PendingStatusContent.d.ts +3 -1
  48. package/lib/components/CreditForm/PendingStatusContent.js +2 -2
  49. package/lib/components/CreditForm/PendingStatusContent.js.map +1 -1
  50. package/lib/components/CreditForm/calculateInputs.js +2 -0
  51. package/lib/components/CreditForm/calculateInputs.js.map +1 -1
  52. package/lib/ui-kit/FormField/getObjectValidator.js +2 -2
  53. package/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  54. package/lib/ui-kit/FormField/validators.d.ts +1 -0
  55. package/lib/ui-kit/FormField/validators.js +1 -0
  56. package/lib/ui-kit/FormField/validators.js.map +1 -1
  57. package/lib/ui-kit/TimerCircle/Timer.d.ts +1 -2
  58. package/lib/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  59. package/lib/ui-kit/TimerCircle/TimerCircle.js +8 -2
  60. package/lib/ui-kit/TimerCircle/TimerCircle.js.map +1 -1
  61. package/mobile/bundle/api/RetailAPI/getTaskStatus.d.ts +3 -3
  62. package/mobile/bundle/bundle.umd.js +37 -21
  63. package/mobile/bundle/bundle.umd.min.js +1 -1
  64. package/mobile/bundle/components/CreditForm/CreditFormStatus.d.ts +1 -0
  65. package/mobile/bundle/components/CreditForm/PendingStatusContent.d.ts +3 -1
  66. package/mobile/bundle/ui-kit/FormField/validators.d.ts +1 -0
  67. package/mobile/bundle/ui-kit/TimerCircle/Timer.d.ts +1 -2
  68. package/mobile/bundle/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  69. package/mobile/dist/api/RetailAPI/getTaskStatus.d.ts +3 -3
  70. package/mobile/dist/api/RetailAPI/getTaskStatus.js +3 -3
  71. package/mobile/dist/api/RetailAPI/getTaskStatus.js.map +1 -1
  72. package/mobile/dist/components/CreditCardForm/CreditCardFormStatusTracker.js +3 -3
  73. package/mobile/dist/components/CreditCardForm/CreditCardFormStatusTracker.js.map +1 -1
  74. package/mobile/dist/components/CreditCardForm/calculateInputs.js +2 -0
  75. package/mobile/dist/components/CreditCardForm/calculateInputs.js.map +1 -1
  76. package/mobile/dist/components/CreditForm/CreditFormStatus.d.ts +1 -0
  77. package/mobile/dist/components/CreditForm/CreditFormStatus.js +7 -3
  78. package/mobile/dist/components/CreditForm/CreditFormStatus.js.map +1 -1
  79. package/mobile/dist/components/CreditForm/CreditFormStatusTracker.js +7 -6
  80. package/mobile/dist/components/CreditForm/CreditFormStatusTracker.js.map +1 -1
  81. package/mobile/dist/components/CreditForm/PendingStatusContent.d.ts +3 -1
  82. package/mobile/dist/components/CreditForm/PendingStatusContent.js +2 -2
  83. package/mobile/dist/components/CreditForm/PendingStatusContent.js.map +1 -1
  84. package/mobile/dist/components/CreditForm/calculateInputs.js +2 -0
  85. package/mobile/dist/components/CreditForm/calculateInputs.js.map +1 -1
  86. package/mobile/dist/ui-kit/FormField/getObjectValidator.js +1 -1
  87. package/mobile/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  88. package/mobile/dist/ui-kit/FormField/validators.d.ts +1 -0
  89. package/mobile/dist/ui-kit/FormField/validators.js +3 -1
  90. package/mobile/dist/ui-kit/FormField/validators.js.map +1 -1
  91. package/mobile/dist/ui-kit/TimerCircle/Timer.d.ts +1 -2
  92. package/mobile/dist/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  93. package/mobile/dist/ui-kit/TimerCircle/TimerCircle.js +8 -2
  94. package/mobile/dist/ui-kit/TimerCircle/TimerCircle.js.map +1 -1
  95. package/mobile/lib/api/RetailAPI/getTaskStatus.d.ts +3 -3
  96. package/mobile/lib/api/RetailAPI/getTaskStatus.js +3 -3
  97. package/mobile/lib/api/RetailAPI/getTaskStatus.js.map +1 -1
  98. package/mobile/lib/components/CreditCardForm/CreditCardFormStatusTracker.js +3 -3
  99. package/mobile/lib/components/CreditCardForm/CreditCardFormStatusTracker.js.map +1 -1
  100. package/mobile/lib/components/CreditCardForm/calculateInputs.js +2 -0
  101. package/mobile/lib/components/CreditCardForm/calculateInputs.js.map +1 -1
  102. package/mobile/lib/components/CreditForm/CreditFormStatus.d.ts +1 -0
  103. package/mobile/lib/components/CreditForm/CreditFormStatus.js +7 -3
  104. package/mobile/lib/components/CreditForm/CreditFormStatus.js.map +1 -1
  105. package/mobile/lib/components/CreditForm/CreditFormStatusTracker.js +7 -6
  106. package/mobile/lib/components/CreditForm/CreditFormStatusTracker.js.map +1 -1
  107. package/mobile/lib/components/CreditForm/PendingStatusContent.d.ts +3 -1
  108. package/mobile/lib/components/CreditForm/PendingStatusContent.js +2 -2
  109. package/mobile/lib/components/CreditForm/PendingStatusContent.js.map +1 -1
  110. package/mobile/lib/components/CreditForm/calculateInputs.js +2 -0
  111. package/mobile/lib/components/CreditForm/calculateInputs.js.map +1 -1
  112. package/mobile/lib/ui-kit/FormField/getObjectValidator.js +2 -2
  113. package/mobile/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  114. package/mobile/lib/ui-kit/FormField/validators.d.ts +1 -0
  115. package/mobile/lib/ui-kit/FormField/validators.js +1 -0
  116. package/mobile/lib/ui-kit/FormField/validators.js.map +1 -1
  117. package/mobile/lib/ui-kit/TimerCircle/Timer.d.ts +1 -2
  118. package/mobile/lib/ui-kit/TimerCircle/TimerCircle.d.ts +1 -0
  119. package/mobile/lib/ui-kit/TimerCircle/TimerCircle.js +8 -2
  120. package/mobile/lib/ui-kit/TimerCircle/TimerCircle.js.map +1 -1
  121. package/mobile/src/api/RetailAPI/getTaskStatus.ts +3 -3
  122. package/mobile/src/components/CreditCardForm/CreditCardFormStatusTracker.tsx +3 -3
  123. package/mobile/src/components/CreditCardForm/calculateInputs.ts +4 -0
  124. package/mobile/src/components/CreditForm/CreditFormStatus.tsx +42 -29
  125. package/mobile/src/components/CreditForm/CreditFormStatusTracker.tsx +8 -6
  126. package/mobile/src/components/CreditForm/PendingStatusContent.tsx +36 -33
  127. package/mobile/src/components/CreditForm/calculateInputs.ts +4 -0
  128. package/mobile/src/ui-kit/FormField/getObjectValidator.tsx +2 -1
  129. package/mobile/src/ui-kit/FormField/validators.ts +6 -0
  130. package/mobile/src/ui-kit/TimerCircle/Timer.tsx +1 -1
  131. package/mobile/src/ui-kit/TimerCircle/TimerCircle.tsx +33 -23
  132. package/package.json +2 -2
  133. package/src/api/RetailAPI/getTaskStatus.ts +3 -3
  134. package/src/components/CreditCardForm/CreditCardFormStatusTracker.tsx +3 -3
  135. package/src/components/CreditCardForm/calculateInputs.ts +4 -0
  136. package/src/components/CreditForm/CreditForm.fixture.tsx +8 -4
  137. package/src/components/CreditForm/CreditFormStatus.tsx +42 -29
  138. package/src/components/CreditForm/CreditFormStatusTracker.tsx +8 -6
  139. package/src/components/CreditForm/PendingStatusContent.tsx +36 -33
  140. package/src/components/CreditForm/calculateInputs.ts +4 -0
  141. package/src/ui-kit/FormField/getObjectValidator.tsx +2 -1
  142. package/src/ui-kit/FormField/validators.ts +6 -0
  143. package/src/ui-kit/TimerCircle/Timer.tsx +1 -1
  144. package/src/ui-kit/TimerCircle/TimerCircle.tsx +33 -23
@@ -3,12 +3,16 @@ import { DialogManager } from '../../ui-kit/DialogManager/DialogManager';
3
3
  import { PopupManager } from '../../ui-kit/PopupManager/PopupManager';
4
4
  import { CreditForm } from './CreditForm';
5
5
 
6
- const MOCK_TOKEN = 'mockKEY';
6
+ const MOCK_TOKEN = 'mock-key';
7
7
  const MOCK_TASK_ID = '111111';
8
8
 
9
- globalThis.sessionStorage?.setItem('refreshToken', MOCK_TOKEN);
10
- globalThis.sessionStorage?.setItem('accessToken', MOCK_TOKEN);
11
- globalThis.localStorage.setItem('taskId', MOCK_TASK_ID);
9
+ const refreshToken = globalThis.sessionStorage?.getItem('refreshToken');
10
+ const accessToken = globalThis.sessionStorage?.getItem('accessToken');
11
+ const taskId = globalThis.localStorage.getItem('taskId');
12
+
13
+ !refreshToken && globalThis.sessionStorage?.setItem('refreshToken', MOCK_TOKEN);
14
+ !accessToken && globalThis.sessionStorage?.setItem('accessToken', MOCK_TOKEN);
15
+ !taskId && globalThis.localStorage.setItem('taskId', MOCK_TASK_ID);
12
16
 
13
17
  export default {
14
18
  default: (
@@ -15,6 +15,7 @@ type CreditFormStatusProps = UniBlockProps & {
15
15
  title?: string;
16
16
  description?: string;
17
17
  interval?: number;
18
+ intervalExpireAction?: () => void;
18
19
  sectionInfoTitle?: string;
19
20
  sectionInfo?: (LabelProps & DescriptionProps)[];
20
21
  sectionAdditionalTitle?: string;
@@ -34,36 +35,48 @@ export const CreditFormStatus = JSX<CreditFormStatusProps>(
34
35
  sectionInfoAdditional,
35
36
  buttonText,
36
37
  interval,
38
+ intervalExpireAction = () => {
39
+ return;
40
+ },
37
41
  ...props
38
- }) => (
39
- <BlockWrapper {...props}>
40
- <div className="flex flex-col md:flex-row items-center">
41
- <Headline
42
- headlineVersion="M"
43
- title={title}
44
- description={dsc}
45
- align="text-left"
46
- padding="p-xl"
47
- className="w-full"
48
- />
49
- {interval ? <TimerCircle interval={interval} /> : null}
50
- </div>
51
- <SectionInfo title={sectionInfoTitle} items={sectionInfo} />
52
- <SectionInfo title={sectionAdditionalTitle} items={sectionInfoAdditional} countColumns />
53
- {infoCard?.__html ? (
54
- <InfoCard
55
- __html={infoCard?.__html}
56
- icon={infoCard?.icon}
57
- link={{
58
- text: infoCard?.link?.text,
59
- }}
60
- />
61
- ) : null}
62
- {buttonText ? (
63
- <LinkButton href="/natural" text={buttonText} version="primary" className="w-full mt-lg" />
64
- ) : null}
65
- </BlockWrapper>
66
- ),
42
+ }) => {
43
+ return (
44
+ <BlockWrapper {...props}>
45
+ <div className="flex flex-col md:flex-row items-center">
46
+ <Headline
47
+ headlineVersion="M"
48
+ title={title}
49
+ description={dsc}
50
+ align="text-left"
51
+ padding="p-xl"
52
+ className="w-full"
53
+ />
54
+ {interval ? (
55
+ <TimerCircle interval={interval} intervalExpireAction={intervalExpireAction} />
56
+ ) : null}
57
+ </div>
58
+ <SectionInfo title={sectionInfoTitle} items={sectionInfo} />
59
+ <SectionInfo title={sectionAdditionalTitle} items={sectionInfoAdditional} countColumns />
60
+ {infoCard?.__html ? (
61
+ <InfoCard
62
+ __html={infoCard?.__html}
63
+ icon={infoCard?.icon}
64
+ link={{
65
+ text: infoCard?.link?.text,
66
+ }}
67
+ />
68
+ ) : null}
69
+ {buttonText ? (
70
+ <LinkButton
71
+ href="/natural"
72
+ text={buttonText}
73
+ version="primary"
74
+ className="w-full mt-lg"
75
+ />
76
+ ) : null}
77
+ </BlockWrapper>
78
+ );
79
+ },
67
80
  );
68
81
 
69
82
  const SectionInfo = ({
@@ -36,15 +36,17 @@ export const CreditFormStatusTracker = JSX(() => {
36
36
  return () => clearInterval(pullingInterval);
37
37
  }, []);
38
38
 
39
- return renderStatus(status);
39
+ const handleExpire = () => setStatus(STATUS_TYPE.rework);
40
+
41
+ return renderStatus(status, handleExpire);
40
42
  });
41
43
 
42
- const renderStatus = (status: STATUS_TYPE) => {
44
+ const renderStatus = (status: STATUS_TYPE, handleExpire: () => void) => {
43
45
  const statusesMap: Record<STATUS_TYPE, JSX.Element> = {
44
- IN_PROCESS: <PendingStatusContent />,
45
- FAILED: <FailedStatusContent />,
46
- OK: <SuccessStatusContent />,
47
- REWORK: <ReworkStatusContent />,
46
+ IN_PROCESS: <PendingStatusContent handleExpireTimer={handleExpire} />,
47
+ CANCELLED: <FailedStatusContent />,
48
+ APPROVED: <SuccessStatusContent />,
49
+ REVISION: <ReworkStatusContent />,
48
50
  };
49
51
 
50
52
  return statusesMap[status] || null;
@@ -2,37 +2,40 @@ import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useLocalStorage } from '../../hooks/useLocalStorage';
3
3
  import { CreditFormStatus } from './CreditFormStatus';
4
4
 
5
- export const PendingStatusContent = JSX(() => {
6
- const [leadForm] = useLocalStorage<Record<string, any>>('leadForm');
5
+ export const PendingStatusContent = JSX(
6
+ ({ handleExpireTimer }: { handleExpireTimer: () => void }) => {
7
+ const [leadForm] = useLocalStorage<Record<string, any>>('leadForm');
7
8
 
8
- return (
9
- <CreditFormStatus
10
- interval={300}
11
- title="Заявка успешно отправлена"
12
- description="Не закрывайте окно, скоро сообщим результат"
13
- sectionInfoTitle="Заявленные условия по кредиту"
14
- sectionInfo={[
15
- {
16
- label: 'Название продукта',
17
- description: 'Кредит на любые цели',
18
- },
19
- {
20
- label: 'Цель кредита',
21
- description: 'На любые цели',
22
- },
23
- {
24
- label: 'Сумма',
25
- description: leadForm?.moneyValue?.toLocaleString() + '',
26
- },
27
- {
28
- label: 'Срок кредита',
29
- description: leadForm?.monthsValue + ' мес',
30
- },
31
- {
32
- label: 'Тип платежа',
33
- description: leadForm?.isAnnuity ? 'Аннуитетный' : 'Дифференцированный',
34
- },
35
- ]}
36
- />
37
- );
38
- });
9
+ return (
10
+ <CreditFormStatus
11
+ interval={300}
12
+ intervalExpireAction={handleExpireTimer}
13
+ title="Заявка успешно отправлена"
14
+ description="Не закрывайте окно, скоро сообщим результат"
15
+ sectionInfoTitle="Заявленные условия по кредиту"
16
+ sectionInfo={[
17
+ {
18
+ label: 'Название продукта',
19
+ description: 'Кредит на любые цели',
20
+ },
21
+ {
22
+ label: 'Цель кредита',
23
+ description: 'На любые цели',
24
+ },
25
+ {
26
+ label: 'Сумма',
27
+ description: leadForm?.moneyValue?.toLocaleString() + ' ₽',
28
+ },
29
+ {
30
+ label: 'Срок кредита',
31
+ description: leadForm?.monthsValue + ' мес',
32
+ },
33
+ {
34
+ label: 'Тип платежа',
35
+ description: leadForm?.isAnnuity ? 'Аннуитетный' : 'Дифференцированный',
36
+ },
37
+ ]}
38
+ />
39
+ );
40
+ },
41
+ );
@@ -14,6 +14,7 @@ export const calculateInputs = (getValue: GetValue) => (inputs: FieldDef[], step
14
14
  checkBusinessOwner(_, getValue),
15
15
  checkConsentPfrFlg(_, getValue),
16
16
  checkAddressFillFromESIA(_, getValue),
17
+ checkAddressFact(_, getValue),
17
18
  checkCondition(_, getValue),
18
19
  ].some(Boolean)
19
20
  ) {
@@ -35,6 +36,9 @@ const checkConsentPfrFlg = ({ name }: FieldDef, getValue: GetValue) =>
35
36
  const checkAddressFillFromESIA = ({ name, filledByEsia }: FieldDef, getValue: GetValue) =>
36
37
  name?.startsWith('address') && getValue('esiaAccountTypeCd')?.key && filledByEsia;
37
38
 
39
+ const checkAddressFact = ({ name }: FieldDef, getValue: GetValue) =>
40
+ name === 'addressFact' && getValue('addressMatch');
41
+
38
42
  export const checkCondition = ({ condition }: FieldDef, getValue: GetValue) =>
39
43
  condition?.name &&
40
44
  condition?.values?.some((_) => {
@@ -3,6 +3,7 @@ import { type Validator } from '../../validation/validator';
3
3
  import { getNamesFromInput } from './getNamesFromInput';
4
4
  import {
5
5
  addressDaDataValidator,
6
+ addressOrganizationValidator,
6
7
  agreementValidator,
7
8
  codeWordValidator,
8
9
  defaultSelectValidator,
@@ -83,7 +84,7 @@ export const validatorObj: Record<string, Validator> = {
83
84
  armyIdFlg: agreementValidator,
84
85
  sex: defaultValidator('Укажите свой пол'),
85
86
  addressRegistration: addressDaDataValidator(),
86
- organizationAddress: addressDaDataValidator(),
87
+ organizationAddress: addressOrganizationValidator(),
87
88
  participantDateRegistration: defaultValidator('Укажите дату регистрации'),
88
89
  retirementIncome: defaultValidator(),
89
90
  otherIncome: defaultValidator(),
@@ -71,6 +71,12 @@ const addressDaDataValidate = (address: Address) =>
71
71
 
72
72
  export const addressDaDataValidator = () =>
73
73
  validator(addressDaDataValidate)('Укажите регион, город/населенный пункт, улицу, дом, квартиру');
74
+
75
+ export const addressOrganizationValidator = () =>
76
+ validator((address: Address) => Boolean(address.fiasCode && address.city && address.house))(
77
+ 'Укажите регион, город/населенный пункт, улицу, дом',
78
+ );
79
+
74
80
  export const codeWordValidator = (errorMsg?: string) =>
75
81
  validator(
76
82
  (_) =>
@@ -3,7 +3,7 @@ import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
3
3
 
4
4
  interface TimerProps {
5
5
  time: number;
6
- setTime: React.Dispatch<React.SetStateAction<number>>;
6
+ setTime: (value: number) => void;
7
7
  interval?: number;
8
8
  className?: string;
9
9
  }
@@ -7,36 +7,46 @@ import { Timer } from './Timer';
7
7
 
8
8
  interface TimerCircleProps {
9
9
  interval?: number;
10
+ intervalExpireAction?: () => void | null;
10
11
  title?: string;
11
12
  __html?: string;
12
13
  }
13
14
 
14
- export const TimerCircle = JSX<TimerCircleProps>(({ interval = 0, title, __html }) => {
15
- const [time, setTime] = useState(interval);
15
+ export const TimerCircle = JSX<TimerCircleProps>(
16
+ ({ interval = 0, intervalExpireAction = () => null, title, __html }) => {
17
+ const [time, setTime] = useState(interval);
16
18
 
17
- const gradientPercentage = 100 - ((interval - time) / interval) * 100;
19
+ const setTimeWithHandleExpire = (value: number) => {
20
+ if (value === 0) {
21
+ intervalExpireAction();
22
+ }
23
+ setTime(value);
24
+ };
18
25
 
19
- return (
20
- <div>
21
- {title ? <Headline title={title} headlineVersion="S" /> : null}
22
- <div className="flex justify-center items-center flex-col">
23
- <div
24
- className={style(
25
- `relative flex items-center justify-center w-24 h-24 rounded-full bg-gray text-transparent mb-5`,
26
- )}
27
- >
26
+ const gradientPercentage = 100 - ((interval - time) / interval) * 100;
27
+
28
+ return (
29
+ <div>
30
+ {title ? <Headline title={title} headlineVersion="S" /> : null}
31
+ <div className="flex justify-center items-center flex-col">
28
32
  <div
29
- className="absolute inset-0 rounded-full"
30
- style={{
31
- background: `conic-gradient(rgb(66, 171, 68) ${gradientPercentage}%, rgb(125, 126, 127) 0deg)`,
32
- }}
33
- />
34
- <div className="z-10 flex items-center justify-center px-4 py-2 rounded-full w-20 h-20 bg-white text-primary-text text-m">
35
- <Timer interval={interval} time={time} setTime={setTime} />
33
+ className={style(
34
+ `relative flex items-center justify-center w-24 h-24 rounded-full bg-gray text-transparent mb-5`,
35
+ )}
36
+ >
37
+ <div
38
+ className="absolute inset-0 rounded-full"
39
+ style={{
40
+ background: `conic-gradient(rgb(66, 171, 68) ${gradientPercentage}%, rgb(125, 126, 127) 0deg)`,
41
+ }}
42
+ />
43
+ <div className="z-10 flex items-center justify-center px-4 py-2 rounded-full w-20 h-20 bg-white text-primary-text text-m">
44
+ <Timer interval={interval} time={time} setTime={setTimeWithHandleExpire} />
45
+ </div>
36
46
  </div>
47
+ {__html ? <RichText __html={__html} /> : null}
37
48
  </div>
38
- {__html ? <RichText __html={__html} /> : null}
39
49
  </div>
40
- </div>
41
- );
42
- });
50
+ );
51
+ },
52
+ );