@redneckz/wildless-cms-uni-blocks 0.14.1027 → 0.14.1028

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 (159) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +158 -82
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/RatesTable/RatesTable.d.ts +6 -0
  5. package/bundle/components/RatesTable/RatesTableContent.d.ts +12 -0
  6. package/bundle/components/RatesTable/RatesTableItem.d.ts +9 -0
  7. package/bundle/components/RatesTable/renderDataPickForm.d.ts +1 -0
  8. package/bundle/components/RatesTable/renderDate.d.ts +6 -0
  9. package/bundle/components/RatesTable/renderLink.d.ts +1 -0
  10. package/bundle/hooks/useRates.d.ts +4 -0
  11. package/bundle/ui-kit/Rate/Rate.d.ts +12 -0
  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/RatesTable/RatesTable.d.ts +6 -0
  17. package/dist/components/RatesTable/RatesTable.js +17 -0
  18. package/dist/components/RatesTable/RatesTable.js.map +1 -0
  19. package/dist/components/RatesTable/RatesTableContent.d.ts +12 -0
  20. package/dist/components/RatesTable/RatesTableContent.js +2 -0
  21. package/dist/components/RatesTable/RatesTableContent.js.map +1 -0
  22. package/dist/components/RatesTable/RatesTableItem.d.ts +9 -0
  23. package/dist/components/RatesTable/RatesTableItem.js +16 -0
  24. package/dist/components/RatesTable/RatesTableItem.js.map +1 -0
  25. package/dist/components/RatesTable/renderDataPickForm.d.ts +1 -0
  26. package/dist/components/RatesTable/renderDataPickForm.js +8 -0
  27. package/dist/components/RatesTable/renderDataPickForm.js.map +1 -0
  28. package/dist/components/RatesTable/renderDate.d.ts +6 -0
  29. package/dist/components/RatesTable/renderDate.js +24 -0
  30. package/dist/components/RatesTable/renderDate.js.map +1 -0
  31. package/dist/components/RatesTable/renderLink.d.ts +1 -0
  32. package/dist/components/RatesTable/renderLink.js +8 -0
  33. package/dist/components/RatesTable/renderLink.js.map +1 -0
  34. package/dist/hooks/useRates.d.ts +4 -0
  35. package/dist/hooks/useRates.js +42 -0
  36. package/dist/hooks/useRates.js.map +1 -0
  37. package/dist/ui-kit/Rate/Rate.d.ts +12 -0
  38. package/dist/ui-kit/Rate/Rate.js +11 -0
  39. package/dist/ui-kit/Rate/Rate.js.map +1 -0
  40. package/lib/common.css +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/RatesTable/RatesTable.d.ts +6 -0
  46. package/lib/components/RatesTable/RatesTable.fixture.d.ts +6 -0
  47. package/lib/components/RatesTable/RatesTable.fixture.mobile.d.ts +6 -0
  48. package/lib/components/RatesTable/RatesTable.js +15 -0
  49. package/lib/components/RatesTable/RatesTable.js.map +1 -0
  50. package/lib/components/RatesTable/RatesTableContent.d.ts +12 -0
  51. package/lib/components/RatesTable/RatesTableContent.js +2 -0
  52. package/lib/components/RatesTable/RatesTableContent.js.map +1 -0
  53. package/lib/components/RatesTable/RatesTableItem.d.ts +9 -0
  54. package/lib/components/RatesTable/RatesTableItem.js +14 -0
  55. package/lib/components/RatesTable/RatesTableItem.js.map +1 -0
  56. package/lib/components/RatesTable/renderDataPickForm.d.ts +1 -0
  57. package/lib/components/RatesTable/renderDataPickForm.js +5 -0
  58. package/lib/components/RatesTable/renderDataPickForm.js.map +1 -0
  59. package/lib/components/RatesTable/renderDate.d.ts +6 -0
  60. package/lib/components/RatesTable/renderDate.js +21 -0
  61. package/lib/components/RatesTable/renderDate.js.map +1 -0
  62. package/lib/components/RatesTable/renderLink.d.ts +1 -0
  63. package/lib/components/RatesTable/renderLink.js +5 -0
  64. package/lib/components/RatesTable/renderLink.js.map +1 -0
  65. package/lib/hooks/useRates.d.ts +4 -0
  66. package/lib/hooks/useRates.js +39 -0
  67. package/lib/hooks/useRates.js.map +1 -0
  68. package/lib/ui-kit/Rate/Rate.d.ts +12 -0
  69. package/lib/ui-kit/Rate/Rate.js +9 -0
  70. package/lib/ui-kit/Rate/Rate.js.map +1 -0
  71. package/mobile/bundle/bundle.umd.js +123 -47
  72. package/mobile/bundle/bundle.umd.min.js +1 -1
  73. package/mobile/bundle/components/RatesTable/RatesTable.d.ts +6 -0
  74. package/mobile/bundle/components/RatesTable/RatesTableContent.d.ts +12 -0
  75. package/mobile/bundle/components/RatesTable/RatesTableItem.d.ts +9 -0
  76. package/mobile/bundle/components/RatesTable/renderDataPickForm.d.ts +1 -0
  77. package/mobile/bundle/components/RatesTable/renderDate.d.ts +6 -0
  78. package/mobile/bundle/components/RatesTable/renderLink.d.ts +1 -0
  79. package/mobile/bundle/hooks/useRates.d.ts +4 -0
  80. package/mobile/bundle/ui-kit/Rate/Rate.d.ts +12 -0
  81. package/mobile/dist/components/Blocks.js +2 -0
  82. package/mobile/dist/components/Blocks.js.map +1 -1
  83. package/mobile/dist/components/RatesTable/RatesTable.d.ts +6 -0
  84. package/mobile/dist/components/RatesTable/RatesTable.js +17 -0
  85. package/mobile/dist/components/RatesTable/RatesTable.js.map +1 -0
  86. package/mobile/dist/components/RatesTable/RatesTableContent.d.ts +12 -0
  87. package/mobile/dist/components/RatesTable/RatesTableContent.js +2 -0
  88. package/mobile/dist/components/RatesTable/RatesTableContent.js.map +1 -0
  89. package/mobile/dist/components/RatesTable/RatesTableItem.d.ts +9 -0
  90. package/mobile/dist/components/RatesTable/RatesTableItem.js +16 -0
  91. package/mobile/dist/components/RatesTable/RatesTableItem.js.map +1 -0
  92. package/mobile/dist/components/RatesTable/renderDataPickForm.d.ts +1 -0
  93. package/mobile/dist/components/RatesTable/renderDataPickForm.js +8 -0
  94. package/mobile/dist/components/RatesTable/renderDataPickForm.js.map +1 -0
  95. package/mobile/dist/components/RatesTable/renderDate.d.ts +6 -0
  96. package/mobile/dist/components/RatesTable/renderDate.js +24 -0
  97. package/mobile/dist/components/RatesTable/renderDate.js.map +1 -0
  98. package/mobile/dist/components/RatesTable/renderLink.d.ts +1 -0
  99. package/mobile/dist/components/RatesTable/renderLink.js +8 -0
  100. package/mobile/dist/components/RatesTable/renderLink.js.map +1 -0
  101. package/mobile/dist/hooks/useRates.d.ts +4 -0
  102. package/mobile/dist/hooks/useRates.js +42 -0
  103. package/mobile/dist/hooks/useRates.js.map +1 -0
  104. package/mobile/dist/ui-kit/Rate/Rate.d.ts +12 -0
  105. package/mobile/dist/ui-kit/Rate/Rate.js +11 -0
  106. package/mobile/dist/ui-kit/Rate/Rate.js.map +1 -0
  107. package/mobile/lib/common.css +1 -1
  108. package/mobile/lib/components/Blocks.js +2 -0
  109. package/mobile/lib/components/Blocks.js.map +1 -1
  110. package/mobile/lib/components/RatesTable/RatesTable.d.ts +6 -0
  111. package/mobile/lib/components/RatesTable/RatesTable.js +15 -0
  112. package/mobile/lib/components/RatesTable/RatesTable.js.map +1 -0
  113. package/mobile/lib/components/RatesTable/RatesTableContent.d.ts +12 -0
  114. package/mobile/lib/components/RatesTable/RatesTableContent.js +2 -0
  115. package/mobile/lib/components/RatesTable/RatesTableContent.js.map +1 -0
  116. package/mobile/lib/components/RatesTable/RatesTableItem.d.ts +9 -0
  117. package/mobile/lib/components/RatesTable/RatesTableItem.js +14 -0
  118. package/mobile/lib/components/RatesTable/RatesTableItem.js.map +1 -0
  119. package/mobile/lib/components/RatesTable/renderDataPickForm.d.ts +1 -0
  120. package/mobile/lib/components/RatesTable/renderDataPickForm.js +5 -0
  121. package/mobile/lib/components/RatesTable/renderDataPickForm.js.map +1 -0
  122. package/mobile/lib/components/RatesTable/renderDate.d.ts +6 -0
  123. package/mobile/lib/components/RatesTable/renderDate.js +21 -0
  124. package/mobile/lib/components/RatesTable/renderDate.js.map +1 -0
  125. package/mobile/lib/components/RatesTable/renderLink.d.ts +1 -0
  126. package/mobile/lib/components/RatesTable/renderLink.js +5 -0
  127. package/mobile/lib/components/RatesTable/renderLink.js.map +1 -0
  128. package/mobile/lib/hooks/useRates.d.ts +4 -0
  129. package/mobile/lib/hooks/useRates.js +39 -0
  130. package/mobile/lib/hooks/useRates.js.map +1 -0
  131. package/mobile/lib/ui-kit/Rate/Rate.d.ts +12 -0
  132. package/mobile/lib/ui-kit/Rate/Rate.js +9 -0
  133. package/mobile/lib/ui-kit/Rate/Rate.js.map +1 -0
  134. package/mobile/src/components/Blocks.ts +2 -0
  135. package/mobile/src/components/RatesTable/RatesTable.example.json +7 -0
  136. package/mobile/src/components/RatesTable/RatesTable.tsx +38 -0
  137. package/mobile/src/components/RatesTable/RatesTable.ui.json +7 -0
  138. package/mobile/src/components/RatesTable/RatesTableContent.ts +13 -0
  139. package/mobile/src/components/RatesTable/RatesTableItem.tsx +39 -0
  140. package/mobile/src/components/RatesTable/renderDataPickForm.tsx +9 -0
  141. package/mobile/src/components/RatesTable/renderDate.tsx +42 -0
  142. package/mobile/src/components/RatesTable/renderLink.tsx +8 -0
  143. package/mobile/src/hooks/useRates.ts +65 -0
  144. package/mobile/src/ui-kit/Rate/Rate.tsx +27 -0
  145. package/package.json +1 -1
  146. package/src/components/Blocks.mobile.ts +2 -0
  147. package/src/components/Blocks.ts +2 -0
  148. package/src/components/RatesTable/RatesTable.example.json +7 -0
  149. package/src/components/RatesTable/RatesTable.fixture.mobile.tsx +26 -0
  150. package/src/components/RatesTable/RatesTable.fixture.tsx +26 -0
  151. package/src/components/RatesTable/RatesTable.tsx +38 -0
  152. package/src/components/RatesTable/RatesTable.ui.json +7 -0
  153. package/src/components/RatesTable/RatesTableContent.ts +13 -0
  154. package/src/components/RatesTable/RatesTableItem.tsx +39 -0
  155. package/src/components/RatesTable/renderDataPickForm.tsx +9 -0
  156. package/src/components/RatesTable/renderDate.tsx +42 -0
  157. package/src/components/RatesTable/renderLink.tsx +8 -0
  158. package/src/hooks/useRates.ts +65 -0
  159. package/src/ui-kit/Rate/Rate.tsx +27 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../../src/components/Blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../../src/components/Blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
2
+ import { type RatesTableContent } from './RatesTableContent';
3
+ interface RatesTableProps extends RatesTableContent, UniBlockProps {
4
+ }
5
+ export declare const RatesTable: import("@redneckz/uni-jsx").UNIComponent<RatesTableProps, any, any>;
6
+ export {};
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { useRates } from '../../hooks/useRates.js';
4
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper.js';
5
+ import { Heading } from '../../ui-kit/Heading/Heading.js';
6
+ import { style } from '../../utils/style.js';
7
+ import { RatesTableItem } from './RatesTableItem.js';
8
+ import { renderDataPickForm } from './renderDataPickForm.js';
9
+ import { renderLink } from './renderLink.js';
10
+ export const RatesTable = JSX(({ href, className = '', infoMessage, title, isArchive = false, ...rest }) => {
11
+ const ratesList = useRates(isArchive);
12
+ const isRatesValid = ratesList[0].length > 0;
13
+ return (_jsxs(BlockWrapper, { className: style('p-6xl space-y-xl', className), defaultPadding: "p-0", ...rest, children: [_jsx(Heading, { className: "mb-xl", children: title }), isArchive ? renderDataPickForm() : null, ratesList.map((list, i) => (_jsx(RatesTableItem, { list: list, isRatesValid: isRatesValid, isArchive: isArchive, infoMessage: infoMessage }, String(i)))), href ? renderLink(href) : null] }));
14
+ });
15
+ //# sourceMappingURL=RatesTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatesTable.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAC3B,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7C,OAAO,CACL,MAAC,YAAY,IAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,cAAc,EAAC,KAAK,KAAK,IAAI,aAC1F,KAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YAAE,KAAK,GAAW,EAC3C,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,EACvC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EAEpB,WAAW,EAAE,WAAW,IADnB,MAAM,CAAC,CAAC,CAAC,CAEd,CACH,CAAC,EAED,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAClB,CAChB,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type HrefProps } from '../../model/LinkProps';
2
+ /**
3
+ * @title Таблица курсов
4
+ */
5
+ export interface RatesTableContent extends HrefProps {
6
+ /** @title Информационное сообщение */
7
+ infoMessage?: string;
8
+ /** @title Заголовок */
9
+ title?: string;
10
+ /** @hidden */
11
+ isArchive?: boolean;
12
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RatesTableContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatesTableContent.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableContent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { type RateItem } from '../../ui-kit/Rate/Rate';
2
+ import { type RatesTableContent } from './RatesTableContent';
3
+ interface RatesTableItemProps extends RatesTableContent {
4
+ maxDate?: string;
5
+ isRatesValid?: boolean;
6
+ list: RateItem[];
7
+ }
8
+ export declare const RatesTableItem: import("@redneckz/uni-jsx").UNIComponent<RatesTableItemProps, any, any>;
9
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph.js';
4
+ import { Rate, RATES_COLUMN_STYLE } from '../../ui-kit/Rate/Rate.js';
5
+ import { Text } from '../../ui-kit/Text/Text.js';
6
+ import { style } from '../../utils/style.js';
7
+ import { renderDate } from './renderDate.js';
8
+ export const RatesTableItem = JSX(({ isArchive = false, isRatesValid, list = [], infoMessage }) => {
9
+ const maxDate = isRatesValid
10
+ ? list.map((item) => item.lastUpdatedAt).reduce((a, b) => (String(a) > String(b) ? a : b))
11
+ : '';
12
+ return (_jsxs("div", { className: "space-y-xl mb-3xl", children: [maxDate && renderDate({ dateString: maxDate, isArchive }), _jsxs("div", { className: style(RATES_COLUMN_STYLE), children: [_jsx(Text, { font: "font-medium", children: "\u0412\u0430\u043B\u044E\u0442\u0430" }), _jsx(Text, { font: "font-medium", children: "\u041F\u043E\u043A\u0443\u043F\u043A\u0430" }), _jsx(Text, { font: "font-medium", children: "\u041F\u0440\u043E\u0434\u0430\u0436\u0430" })] }), list.length > 0 ? (list.map((rate, i) => _jsx(Rate, { ...rate }, String(i)))) : (_jsx(Paragraph, { children: "\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u0430\u043D\u043D\u044B\u0445" })), _jsx(Paragraph, { color: "text-secondary-text", children: infoMessage })] }));
13
+ });
14
+ //# sourceMappingURL=RatesTableItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatesTableItem.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAiB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAC/B,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAC/B,OAAO,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC1D,eAAK,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,aACvC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,qDAAc,EACtC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,EACvC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,IACnC,EACL,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAC,IAAI,OAAqB,IAAI,IAAnB,MAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAC1D,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,mJAAoC,CAC/C,EAED,KAAC,SAAS,IAAC,KAAK,EAAC,qBAAqB,YAAE,WAAW,GAAa,IAC5D,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const renderDataPickForm: () => any;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { SubmitButton } from '../../ui-kit/Button/SubmitButton.js';
3
+ import { DatePicker } from '../../ui-kit/DatePicker/DatePicker.js';
4
+ export const renderDataPickForm = () => (_jsxs("div", { className: "flex justify-start items-end space-x-xl", children: [_jsx(DatePicker, { label: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0435\u043D\u044C", maxDate: new Date() }), _jsx(SubmitButton, { className: "h-fit", children: "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C" })] }));
5
+ //# sourceMappingURL=renderDataPickForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDataPickForm.js","sourceRoot":"","sources":["../../../src/components/RatesTable/renderDataPickForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CACtC,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,UAAU,IAAC,KAAK,EAAC,2EAAe,EAAC,OAAO,EAAE,IAAI,IAAI,EAAE,GAAI,EACzD,KAAC,YAAY,IAAC,SAAS,EAAC,OAAO,iEAAwB,IACnD,CACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare type RenderDateProps = {
2
+ dateString: string;
3
+ isArchive?: boolean;
4
+ };
5
+ export declare const renderDate: ({ dateString, isArchive }: RenderDateProps) => any;
6
+ export {};
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph.js';
3
+ import { Text } from '../../ui-kit/Text/Text.js';
4
+ const TIMEZONE = 'МСК';
5
+ export const renderDate = ({ dateString, isArchive = false }) => {
6
+ const date = new Date(String(dateString));
7
+ const formatTime = date.toLocaleTimeString('ru-RU', {
8
+ timeZone: 'Europe/Moscow',
9
+ hour: '2-digit',
10
+ minute: '2-digit',
11
+ hour12: false,
12
+ });
13
+ const formatDate = date.toLocaleDateString('ru-RU', {
14
+ timeZone: 'Europe/Moscow',
15
+ day: 'numeric',
16
+ month: 'long',
17
+ year: 'numeric',
18
+ });
19
+ return isArchive ? (_jsxs("div", { children: [_jsx(Paragraph, { color: "text-secondary-text", font: "font-medium", children: formatDate }), _jsxs(Paragraph, { color: "text-secondary-text", children: [formatTime, " (", TIMEZONE, ")"] })] })) : (_jsxs(Text, { color: "text-secondary-text", children: ["\u041A\u0443\u0440\u0441\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B \u043D\u0430 ", formatTime, " (", TIMEZONE, "), ", formatDate] }));
20
+ };
21
+ //# sourceMappingURL=renderDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDate.js","sourceRoot":"","sources":["../../../src/components/RatesTable/renderDate.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAO9C,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,EAAmB,EAAE,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAClD,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAClD,QAAQ,EAAE,eAAe;QACzB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,CAAC,CAAC,CACjB,0BACE,KAAC,SAAS,IAAC,KAAK,EAAC,qBAAqB,EAAC,IAAI,EAAC,aAAa,YACtD,UAAU,GACD,EACZ,MAAC,SAAS,IAAC,KAAK,EAAC,qBAAqB,aACnC,UAAU,QAAI,QAAQ,SACb,IACR,CACP,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,KAAK,EAAC,qBAAqB,4IACP,UAAU,QAAI,QAAQ,SAAK,UAAU,IACxD,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const renderLink: (href: string) => any;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { Link } from '../../ui-kit/Link/Link.js';
3
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph.js';
4
+ export const renderLink = (href) => (_jsxs(Paragraph, { children: ["\u041F\u043E\u043B\u043D\u044B\u0439 \u0430\u0440\u0445\u0438\u0432 \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C ", _jsx(Link, { href: href, children: "\u0437\u0434\u0435\u0441\u044C" })] }));
5
+ //# sourceMappingURL=renderLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderLink.js","sourceRoot":"","sources":["../../../src/components/RatesTable/renderLink.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAC1C,MAAC,SAAS,sMAC0B,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,+CAAc,IACtD,CACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type RateItem } from '../ui-kit/Rate/Rate';
2
+ declare type RateItemList = RateItem[];
3
+ export declare function useRates(isArchive: boolean): RateItemList[];
4
+ export {};
@@ -0,0 +1,39 @@
1
+ import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
2
+ import { useLocalStore } from '@redneckz/uni-jsx/lib/Store/useLocalStore';
3
+ import { API_BASE_URI } from '../api/apiBaseUrl.js';
4
+ import { fetchJSONUnsafe } from '../utils/fetchJSON.js';
5
+ const RATES_URL = `${API_BASE_URI}/rates`;
6
+ const ARCHIVE_RATES_URL = `${API_BASE_URI}/historyrates`;
7
+ const EMPTY_RATES = [
8
+ [
9
+ {
10
+ currencyPair: 'Валютная пара',
11
+ buyRate: 0,
12
+ sellRate: 0,
13
+ },
14
+ ],
15
+ ];
16
+ export function useRates(isArchive) {
17
+ const url = isArchive ? ARCHIVE_RATES_URL : RATES_URL;
18
+ const rateKey = isArchive ? 'archiveRates' : 'rates';
19
+ const ratesStore = useLocalStore();
20
+ // проверяем, надо ли обновлять значения ставок
21
+ const shouldUpdate = getShouldUpdate(isArchive, ratesStore);
22
+ // костыль, не отправлять запрос на бэк, если уже был запрос менее 15 мин назад
23
+ const { data } = useAsyncData(shouldUpdate ? url : '', fetchJSONUnsafe);
24
+ // если есть data и значение надо обновить, то обновляем локалсторадж
25
+ if (shouldUpdate && data) {
26
+ const nextUpdate = getTimeAfter15Minutes();
27
+ ratesStore[rateKey] = { rate: data, nextUpdate };
28
+ }
29
+ // берем данные из локалсторадж
30
+ const rates = ratesStore[rateKey]?.rate;
31
+ // возвращаем данные из локалсторадж или заглушку
32
+ return Array.isArray(rates) ? rates : EMPTY_RATES;
33
+ }
34
+ // Отсчитываем 15 минут с текущего момента
35
+ const getTimeAfter15Minutes = () => Date.now() + 15 * 60 * 1000;
36
+ const getShouldUpdate = (isArchive, ratesStore) => isArchive
37
+ ? !ratesStore?.archiveRates || ratesStore?.archiveRates.nextUpdate <= Date.now()
38
+ : !ratesStore?.rates || ratesStore?.rates.nextUpdate <= Date.now();
39
+ //# sourceMappingURL=useRates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRates.js","sourceRoot":"","sources":["../../src/hooks/useRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAA4B,MAAM,oBAAoB,CAAC;AAc/E,MAAM,SAAS,GAAG,GAAG,YAAY,QAAQ,CAAC;AAC1C,MAAM,iBAAiB,GAAG,GAAG,YAAY,eAAe,CAAC;AACzD,MAAM,WAAW,GAAmB;IAClC;QACE;YACE,YAAY,EAAE,eAAe;YAC7B,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;SACZ;KACF;CACF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,SAAkB;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,MAAM,UAAU,GAAG,aAAa,EAAmB,CAAC;IAEpD,+CAA+C;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE,UAA6B,CAAC,CAAC;IAE/E,+EAA+E;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAC3B,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EACvB,eAAsD,CACvD,CAAC;IAEF,qEAAqE;IACrE,IAAI,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAClD;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IAExC,iDAAiD;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AACpD,CAAC;AAED,0CAA0C;AAC1C,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhE,MAAM,eAAe,GAAG,CAAC,SAAkB,EAAE,UAAkC,EAAE,EAAE,CACjF,SAAS;IACP,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,IAAI,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;IAChF,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
2
+ export declare type RateItem = {
3
+ currencyPair?: string;
4
+ buyRate?: number;
5
+ sellRate?: number;
6
+ lastUpdatedAt?: string;
7
+ };
8
+ interface RateProps extends RateItem, UniBlockProps {
9
+ }
10
+ export declare const RATES_COLUMN_STYLE = "grid grid-cols-3 gap-s";
11
+ export declare const Rate: import("../../UniBlock/UniBlock").UniBlockComponent<RateProps>;
12
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { DIVIDER_STYLE } from '../../components/TariffsTable/TariffsTableRowContainer.js';
3
+ import { UniBlock } from '../../UniBlock/UniBlock.js';
4
+ import { style } from '../../utils/style.js';
5
+ export const RATES_COLUMN_STYLE = `grid grid-cols-3 gap-s`;
6
+ export const Rate = UniBlock(({ currencyPair = '', buyRate = 0, sellRate = 0 }) => (_jsxs("div", { className: style('mb-s', RATES_COLUMN_STYLE, DIVIDER_STYLE), children: [_jsx("div", { children: formatCurrencyPair(currencyPair) }), _jsx("div", { children: formatRate(buyRate) }), _jsx("div", { children: formatRate(sellRate) })] })));
7
+ const formatCurrencyPair = (currency) => currency.replace('_TOD', '');
8
+ const formatRate = (rate) => rate.toFixed(4);
9
+ //# sourceMappingURL=Rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rate.js","sourceRoot":"","sources":["../../../src/ui-kit/Rate/Rate.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAY,CAAC,EAAE,YAAY,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAC5F,eAAK,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,CAAC,aAC9D,wBAAM,kBAAkB,CAAC,YAAY,CAAC,GAAO,EAC7C,wBAAM,UAAU,CAAC,OAAO,CAAC,GAAO,EAChC,wBAAM,UAAU,CAAC,QAAQ,CAAC,GAAO,IAC7B,CACP,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE9E,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -36,6 +36,7 @@ import { LinkDocs } from './LinkDocs/LinkDocs';
36
36
  import { MobileAppTile } from './MobileAppTile/MobileAppTile';
37
37
  import { OfficesAtmsMap } from './OfficesAtmsMap/OfficesAtmsMap';
38
38
  import { ProductBlock } from './ProductBlock/ProductBlock';
39
+ import { RatesTable } from './RatesTable/RatesTable';
39
40
  import { RichTextBlock } from './RichTextBlock/RichTextBlock';
40
41
  import { RkoTariffCardsTable } from './RkoTariffCardsTable/RkoTariffCardsTable';
41
42
  import { RollupItem } from './RollupItem/RollupItem';
@@ -92,4 +93,5 @@ export const Blocks: BlocksRegistry = {
92
93
  CashbackCalculator,
93
94
  CalculatorRko,
94
95
  RkoTariffCardsTable,
96
+ RatesTable,
95
97
  };
@@ -0,0 +1,7 @@
1
+ {
2
+ "content": {
3
+ "infoMessage": "",
4
+ "title": "Курс покупки/продажи для операций с использованием платежных карт в сети Банка",
5
+ "href": ""
6
+ }
7
+ }
@@ -0,0 +1,38 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useRates } from '../../hooks/useRates';
3
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
4
+ import { Heading } from '../../ui-kit/Heading/Heading';
5
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
6
+ import { style } from '../../utils/style';
7
+ import { type RatesTableContent } from './RatesTableContent';
8
+ import { RatesTableItem } from './RatesTableItem';
9
+ import { renderDataPickForm } from './renderDataPickForm';
10
+ import { renderLink } from './renderLink';
11
+
12
+ interface RatesTableProps extends RatesTableContent, UniBlockProps {}
13
+
14
+ export const RatesTable = JSX<RatesTableProps>(
15
+ ({ href, className = '', infoMessage, title, isArchive = false, ...rest }) => {
16
+ const ratesList = useRates(isArchive);
17
+
18
+ const isRatesValid = ratesList[0].length > 0;
19
+
20
+ return (
21
+ <BlockWrapper className={style('p-6xl space-y-xl', className)} defaultPadding="p-0" {...rest}>
22
+ <Heading className="mb-xl">{title}</Heading>
23
+ {isArchive ? renderDataPickForm() : null}
24
+ {ratesList.map((list, i) => (
25
+ <RatesTableItem
26
+ list={list}
27
+ isRatesValid={isRatesValid}
28
+ isArchive={isArchive}
29
+ key={String(i)}
30
+ infoMessage={infoMessage}
31
+ />
32
+ ))}
33
+
34
+ {href ? renderLink(href) : null}
35
+ </BlockWrapper>
36
+ );
37
+ },
38
+ );
@@ -0,0 +1,7 @@
1
+ {
2
+ "content": {
3
+ "href": {
4
+ "ui:field": "attachmentHref"
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,13 @@
1
+ import { type HrefProps } from '../../model/LinkProps';
2
+
3
+ /**
4
+ * @title Таблица курсов
5
+ */
6
+ export interface RatesTableContent extends HrefProps {
7
+ /** @title Информационное сообщение */
8
+ infoMessage?: string;
9
+ /** @title Заголовок */
10
+ title?: string;
11
+ /** @hidden */
12
+ isArchive?: boolean;
13
+ }
@@ -0,0 +1,39 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
3
+ import { Rate, RATES_COLUMN_STYLE, type RateItem } from '../../ui-kit/Rate/Rate';
4
+ import { Text } from '../../ui-kit/Text/Text';
5
+ import { style } from '../../utils/style';
6
+ import { type RatesTableContent } from './RatesTableContent';
7
+ import { renderDate } from './renderDate';
8
+
9
+ interface RatesTableItemProps extends RatesTableContent {
10
+ maxDate?: string;
11
+ isRatesValid?: boolean;
12
+ list: RateItem[];
13
+ }
14
+
15
+ export const RatesTableItem = JSX<RatesTableItemProps>(
16
+ ({ isArchive = false, isRatesValid, list = [], infoMessage }) => {
17
+ const maxDate = isRatesValid
18
+ ? list.map((item) => item.lastUpdatedAt).reduce((a, b) => (String(a) > String(b) ? a : b))
19
+ : '';
20
+
21
+ return (
22
+ <div className="space-y-xl mb-3xl">
23
+ {maxDate && renderDate({ dateString: maxDate, isArchive })}
24
+ <div className={style(RATES_COLUMN_STYLE)}>
25
+ <Text font="font-medium">Валюта</Text>
26
+ <Text font="font-medium">Покупка</Text>
27
+ <Text font="font-medium">Продажа</Text>
28
+ </div>
29
+ {list.length > 0 ? (
30
+ list.map((rate, i) => <Rate key={String(i)} {...rate} />)
31
+ ) : (
32
+ <Paragraph>Ошибка получения данных</Paragraph>
33
+ )}
34
+
35
+ <Paragraph color="text-secondary-text">{infoMessage}</Paragraph>
36
+ </div>
37
+ );
38
+ },
39
+ );
@@ -0,0 +1,9 @@
1
+ import { SubmitButton } from '../../ui-kit/Button/SubmitButton';
2
+ import { DatePicker } from '../../ui-kit/DatePicker/DatePicker';
3
+
4
+ export const renderDataPickForm = () => (
5
+ <div className="flex justify-start items-end space-x-xl">
6
+ <DatePicker label="Выберите день" maxDate={new Date()} />
7
+ <SubmitButton className="h-fit">Показать</SubmitButton>
8
+ </div>
9
+ );
@@ -0,0 +1,42 @@
1
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
2
+ import { Text } from '../../ui-kit/Text/Text';
3
+
4
+ type RenderDateProps = {
5
+ dateString: string;
6
+ isArchive?: boolean;
7
+ };
8
+
9
+ const TIMEZONE = 'МСК';
10
+
11
+ export const renderDate = ({ dateString, isArchive = false }: RenderDateProps) => {
12
+ const date = new Date(String(dateString));
13
+
14
+ const formatTime = date.toLocaleTimeString('ru-RU', {
15
+ timeZone: 'Europe/Moscow',
16
+ hour: '2-digit',
17
+ minute: '2-digit',
18
+ hour12: false,
19
+ });
20
+
21
+ const formatDate = date.toLocaleDateString('ru-RU', {
22
+ timeZone: 'Europe/Moscow',
23
+ day: 'numeric',
24
+ month: 'long',
25
+ year: 'numeric',
26
+ });
27
+
28
+ return isArchive ? (
29
+ <div>
30
+ <Paragraph color="text-secondary-text" font="font-medium">
31
+ {formatDate}
32
+ </Paragraph>
33
+ <Paragraph color="text-secondary-text">
34
+ {formatTime} ({TIMEZONE})
35
+ </Paragraph>
36
+ </div>
37
+ ) : (
38
+ <Text color="text-secondary-text">
39
+ Курсы действительны на {formatTime} ({TIMEZONE}), {formatDate}
40
+ </Text>
41
+ );
42
+ };
@@ -0,0 +1,8 @@
1
+ import { Link } from '../../ui-kit/Link/Link';
2
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
3
+
4
+ export const renderLink = (href: string) => (
5
+ <Paragraph>
6
+ Полный архив вы можете посмотреть <Link href={href}>здесь</Link>
7
+ </Paragraph>
8
+ );
@@ -0,0 +1,65 @@
1
+ import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
2
+ import { useLocalStore } from '@redneckz/uni-jsx/lib/Store/useLocalStore';
3
+ import { API_BASE_URI } from '../api/apiBaseUrl';
4
+ import { type RateItem } from '../ui-kit/Rate/Rate';
5
+ import { fetchJSONUnsafe, type FetchJSONUnsafeType } from '../utils/fetchJSON';
6
+
7
+ type RatesStoreItem = {
8
+ rate: RateItemList[];
9
+ nextUpdate: number;
10
+ };
11
+
12
+ type RateItemList = RateItem[];
13
+
14
+ type RatesStoreSlice = {
15
+ rates: RatesStoreItem;
16
+ archiveRates: RatesStoreItem;
17
+ };
18
+
19
+ const RATES_URL = `${API_BASE_URI}/rates`;
20
+ const ARCHIVE_RATES_URL = `${API_BASE_URI}/historyrates`;
21
+ const EMPTY_RATES: RateItemList[] = [
22
+ [
23
+ {
24
+ currencyPair: 'Валютная пара',
25
+ buyRate: 0,
26
+ sellRate: 0,
27
+ },
28
+ ],
29
+ ];
30
+
31
+ export function useRates(isArchive: boolean): RateItemList[] {
32
+ const url = isArchive ? ARCHIVE_RATES_URL : RATES_URL;
33
+ const rateKey = isArchive ? 'archiveRates' : 'rates';
34
+
35
+ const ratesStore = useLocalStore<RatesStoreSlice>();
36
+
37
+ // проверяем, надо ли обновлять значения ставок
38
+ const shouldUpdate = getShouldUpdate(isArchive, ratesStore as RatesStoreSlice);
39
+
40
+ // костыль, не отправлять запрос на бэк, если уже был запрос менее 15 мин назад
41
+ const { data } = useAsyncData(
42
+ shouldUpdate ? url : '',
43
+ fetchJSONUnsafe as FetchJSONUnsafeType<RateItemList[]>,
44
+ );
45
+
46
+ // если есть data и значение надо обновить, то обновляем локалсторадж
47
+ if (shouldUpdate && data) {
48
+ const nextUpdate = getTimeAfter15Minutes();
49
+ ratesStore[rateKey] = { rate: data, nextUpdate };
50
+ }
51
+
52
+ // берем данные из локалсторадж
53
+ const rates = ratesStore[rateKey]?.rate;
54
+
55
+ // возвращаем данные из локалсторадж или заглушку
56
+ return Array.isArray(rates) ? rates : EMPTY_RATES;
57
+ }
58
+
59
+ // Отсчитываем 15 минут с текущего момента
60
+ const getTimeAfter15Minutes = () => Date.now() + 15 * 60 * 1000;
61
+
62
+ const getShouldUpdate = (isArchive: boolean, ratesStore: RatesStoreSlice | null) =>
63
+ isArchive
64
+ ? !ratesStore?.archiveRates || ratesStore?.archiveRates.nextUpdate <= Date.now()
65
+ : !ratesStore?.rates || ratesStore?.rates.nextUpdate <= Date.now();
@@ -0,0 +1,27 @@
1
+ import { DIVIDER_STYLE } from '../../components/TariffsTable/TariffsTableRowContainer';
2
+ import { UniBlock } from '../../UniBlock/UniBlock';
3
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
4
+ import { style } from '../../utils/style';
5
+
6
+ export type RateItem = {
7
+ currencyPair?: string;
8
+ buyRate?: number;
9
+ sellRate?: number;
10
+ lastUpdatedAt?: string;
11
+ };
12
+
13
+ interface RateProps extends RateItem, UniBlockProps {}
14
+
15
+ export const RATES_COLUMN_STYLE = `grid grid-cols-3 gap-s`;
16
+
17
+ export const Rate = UniBlock<RateProps>(({ currencyPair = '', buyRate = 0, sellRate = 0 }) => (
18
+ <div className={style('mb-s', RATES_COLUMN_STYLE, DIVIDER_STYLE)}>
19
+ <div>{formatCurrencyPair(currencyPair)}</div>
20
+ <div>{formatRate(buyRate)}</div>
21
+ <div>{formatRate(sellRate)}</div>
22
+ </div>
23
+ ));
24
+
25
+ const formatCurrencyPair = (currency: string) => currency.replace('_TOD', '');
26
+
27
+ const formatRate = (rate: number) => rate.toFixed(4);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.14.1027",
3
+ "version": "0.14.1028",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -36,6 +36,7 @@ import { LinkDocs } from './LinkDocs/LinkDocs';
36
36
  import { MobileAppTile } from './MobileAppTile/MobileAppTile';
37
37
  import { OfficesAtmsMap } from './OfficesAtmsMap/OfficesAtmsMap';
38
38
  import { ProductBlock } from './ProductBlock/ProductBlock';
39
+ import { RatesTable } from './RatesTable/RatesTable';
39
40
  import { RichTextBlock } from './RichTextBlock/RichTextBlock';
40
41
  import { RkoTariffCardsTable } from './RkoTariffCardsTable/RkoTariffCardsTable';
41
42
  import { RollupItem } from './RollupItem/RollupItem';
@@ -92,4 +93,5 @@ export const Blocks: BlocksRegistry = {
92
93
  CashbackCalculator,
93
94
  CalculatorRko,
94
95
  RkoTariffCardsTable,
96
+ RatesTable,
95
97
  };
@@ -37,6 +37,7 @@ import { LinkDocs } from './LinkDocs/LinkDocs';
37
37
  import { MobileAppTile } from './MobileAppTile/MobileAppTile';
38
38
  import { OfficesAtmsMap } from './OfficesAtmsMap/OfficesAtmsMap';
39
39
  import { ProductBlock } from './ProductBlock/ProductBlock';
40
+ import { RatesTable } from './RatesTable/RatesTable';
40
41
  import { RichTextBlock } from './RichTextBlock/RichTextBlock';
41
42
  import { RkoTariffCardsTable } from './RkoTariffCardsTable/RkoTariffCardsTable';
42
43
  import { RollupItem } from './RollupItem/RollupItem';
@@ -96,4 +97,5 @@ export const Blocks: BlocksRegistry = {
96
97
  CashbackCalculator,
97
98
  CalculatorRko,
98
99
  RkoTariffCardsTable,
100
+ RatesTable,
99
101
  };
@@ -0,0 +1,7 @@
1
+ {
2
+ "content": {
3
+ "infoMessage": "",
4
+ "title": "Курс покупки/продажи для операций с использованием платежных карт в сети Банка",
5
+ "href": ""
6
+ }
7
+ }
@@ -0,0 +1,26 @@
1
+ import '../../setup-fixture';
2
+ import { RatesTable } from './RatesTable';
3
+
4
+ const ratesTableContent = {
5
+ infoMessage: 'Информация может содержать неточности, актуальный курс уточняйте в отделении Банка',
6
+ title: 'Курс покупки/продажи для операций с использованием платежных карт в сети Банка',
7
+ href: 'rshb.ru',
8
+ };
9
+
10
+ const archiveRatesTableContent = {
11
+ title: 'Архив курсов покупки/продажи для операций с использованием платежных карт в сети Банка',
12
+ isArchive: true,
13
+ };
14
+
15
+ export default {
16
+ default: (
17
+ <div className="container grid grid-cols-12">
18
+ <RatesTable className="col-span-12" {...ratesTableContent} />
19
+ </div>
20
+ ),
21
+ archive: (
22
+ <div className="container grid grid-cols-12">
23
+ <RatesTable className="col-span-12" {...archiveRatesTableContent} />
24
+ </div>
25
+ ),
26
+ };