@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.
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +158 -82
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/RatesTable/RatesTable.d.ts +6 -0
- package/bundle/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/bundle/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/bundle/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/bundle/components/RatesTable/renderDate.d.ts +6 -0
- package/bundle/components/RatesTable/renderLink.d.ts +1 -0
- package/bundle/hooks/useRates.d.ts +4 -0
- package/bundle/ui-kit/Rate/Rate.d.ts +12 -0
- package/dist/components/Blocks.js +2 -0
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/Blocks.mobile.js +2 -0
- package/dist/components/Blocks.mobile.js.map +1 -1
- package/dist/components/RatesTable/RatesTable.d.ts +6 -0
- package/dist/components/RatesTable/RatesTable.js +17 -0
- package/dist/components/RatesTable/RatesTable.js.map +1 -0
- package/dist/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/dist/components/RatesTable/RatesTableContent.js +2 -0
- package/dist/components/RatesTable/RatesTableContent.js.map +1 -0
- package/dist/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/dist/components/RatesTable/RatesTableItem.js +16 -0
- package/dist/components/RatesTable/RatesTableItem.js.map +1 -0
- package/dist/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/dist/components/RatesTable/renderDataPickForm.js +8 -0
- package/dist/components/RatesTable/renderDataPickForm.js.map +1 -0
- package/dist/components/RatesTable/renderDate.d.ts +6 -0
- package/dist/components/RatesTable/renderDate.js +24 -0
- package/dist/components/RatesTable/renderDate.js.map +1 -0
- package/dist/components/RatesTable/renderLink.d.ts +1 -0
- package/dist/components/RatesTable/renderLink.js +8 -0
- package/dist/components/RatesTable/renderLink.js.map +1 -0
- package/dist/hooks/useRates.d.ts +4 -0
- package/dist/hooks/useRates.js +42 -0
- package/dist/hooks/useRates.js.map +1 -0
- package/dist/ui-kit/Rate/Rate.d.ts +12 -0
- package/dist/ui-kit/Rate/Rate.js +11 -0
- package/dist/ui-kit/Rate/Rate.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/Blocks.js +2 -0
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/Blocks.mobile.js +2 -0
- package/lib/components/Blocks.mobile.js.map +1 -1
- package/lib/components/RatesTable/RatesTable.d.ts +6 -0
- package/lib/components/RatesTable/RatesTable.fixture.d.ts +6 -0
- package/lib/components/RatesTable/RatesTable.fixture.mobile.d.ts +6 -0
- package/lib/components/RatesTable/RatesTable.js +15 -0
- package/lib/components/RatesTable/RatesTable.js.map +1 -0
- package/lib/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/lib/components/RatesTable/RatesTableContent.js +2 -0
- package/lib/components/RatesTable/RatesTableContent.js.map +1 -0
- package/lib/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/lib/components/RatesTable/RatesTableItem.js +14 -0
- package/lib/components/RatesTable/RatesTableItem.js.map +1 -0
- package/lib/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/lib/components/RatesTable/renderDataPickForm.js +5 -0
- package/lib/components/RatesTable/renderDataPickForm.js.map +1 -0
- package/lib/components/RatesTable/renderDate.d.ts +6 -0
- package/lib/components/RatesTable/renderDate.js +21 -0
- package/lib/components/RatesTable/renderDate.js.map +1 -0
- package/lib/components/RatesTable/renderLink.d.ts +1 -0
- package/lib/components/RatesTable/renderLink.js +5 -0
- package/lib/components/RatesTable/renderLink.js.map +1 -0
- package/lib/hooks/useRates.d.ts +4 -0
- package/lib/hooks/useRates.js +39 -0
- package/lib/hooks/useRates.js.map +1 -0
- package/lib/ui-kit/Rate/Rate.d.ts +12 -0
- package/lib/ui-kit/Rate/Rate.js +9 -0
- package/lib/ui-kit/Rate/Rate.js.map +1 -0
- package/mobile/bundle/bundle.umd.js +123 -47
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/RatesTable/RatesTable.d.ts +6 -0
- package/mobile/bundle/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/mobile/bundle/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/mobile/bundle/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/mobile/bundle/components/RatesTable/renderDate.d.ts +6 -0
- package/mobile/bundle/components/RatesTable/renderLink.d.ts +1 -0
- package/mobile/bundle/hooks/useRates.d.ts +4 -0
- package/mobile/bundle/ui-kit/Rate/Rate.d.ts +12 -0
- package/mobile/dist/components/Blocks.js +2 -0
- package/mobile/dist/components/Blocks.js.map +1 -1
- package/mobile/dist/components/RatesTable/RatesTable.d.ts +6 -0
- package/mobile/dist/components/RatesTable/RatesTable.js +17 -0
- package/mobile/dist/components/RatesTable/RatesTable.js.map +1 -0
- package/mobile/dist/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/mobile/dist/components/RatesTable/RatesTableContent.js +2 -0
- package/mobile/dist/components/RatesTable/RatesTableContent.js.map +1 -0
- package/mobile/dist/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/mobile/dist/components/RatesTable/RatesTableItem.js +16 -0
- package/mobile/dist/components/RatesTable/RatesTableItem.js.map +1 -0
- package/mobile/dist/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/mobile/dist/components/RatesTable/renderDataPickForm.js +8 -0
- package/mobile/dist/components/RatesTable/renderDataPickForm.js.map +1 -0
- package/mobile/dist/components/RatesTable/renderDate.d.ts +6 -0
- package/mobile/dist/components/RatesTable/renderDate.js +24 -0
- package/mobile/dist/components/RatesTable/renderDate.js.map +1 -0
- package/mobile/dist/components/RatesTable/renderLink.d.ts +1 -0
- package/mobile/dist/components/RatesTable/renderLink.js +8 -0
- package/mobile/dist/components/RatesTable/renderLink.js.map +1 -0
- package/mobile/dist/hooks/useRates.d.ts +4 -0
- package/mobile/dist/hooks/useRates.js +42 -0
- package/mobile/dist/hooks/useRates.js.map +1 -0
- package/mobile/dist/ui-kit/Rate/Rate.d.ts +12 -0
- package/mobile/dist/ui-kit/Rate/Rate.js +11 -0
- package/mobile/dist/ui-kit/Rate/Rate.js.map +1 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/Blocks.js +2 -0
- package/mobile/lib/components/Blocks.js.map +1 -1
- package/mobile/lib/components/RatesTable/RatesTable.d.ts +6 -0
- package/mobile/lib/components/RatesTable/RatesTable.js +15 -0
- package/mobile/lib/components/RatesTable/RatesTable.js.map +1 -0
- package/mobile/lib/components/RatesTable/RatesTableContent.d.ts +12 -0
- package/mobile/lib/components/RatesTable/RatesTableContent.js +2 -0
- package/mobile/lib/components/RatesTable/RatesTableContent.js.map +1 -0
- package/mobile/lib/components/RatesTable/RatesTableItem.d.ts +9 -0
- package/mobile/lib/components/RatesTable/RatesTableItem.js +14 -0
- package/mobile/lib/components/RatesTable/RatesTableItem.js.map +1 -0
- package/mobile/lib/components/RatesTable/renderDataPickForm.d.ts +1 -0
- package/mobile/lib/components/RatesTable/renderDataPickForm.js +5 -0
- package/mobile/lib/components/RatesTable/renderDataPickForm.js.map +1 -0
- package/mobile/lib/components/RatesTable/renderDate.d.ts +6 -0
- package/mobile/lib/components/RatesTable/renderDate.js +21 -0
- package/mobile/lib/components/RatesTable/renderDate.js.map +1 -0
- package/mobile/lib/components/RatesTable/renderLink.d.ts +1 -0
- package/mobile/lib/components/RatesTable/renderLink.js +5 -0
- package/mobile/lib/components/RatesTable/renderLink.js.map +1 -0
- package/mobile/lib/hooks/useRates.d.ts +4 -0
- package/mobile/lib/hooks/useRates.js +39 -0
- package/mobile/lib/hooks/useRates.js.map +1 -0
- package/mobile/lib/ui-kit/Rate/Rate.d.ts +12 -0
- package/mobile/lib/ui-kit/Rate/Rate.js +9 -0
- package/mobile/lib/ui-kit/Rate/Rate.js.map +1 -0
- package/mobile/src/components/Blocks.ts +2 -0
- package/mobile/src/components/RatesTable/RatesTable.example.json +7 -0
- package/mobile/src/components/RatesTable/RatesTable.tsx +38 -0
- package/mobile/src/components/RatesTable/RatesTable.ui.json +7 -0
- package/mobile/src/components/RatesTable/RatesTableContent.ts +13 -0
- package/mobile/src/components/RatesTable/RatesTableItem.tsx +39 -0
- package/mobile/src/components/RatesTable/renderDataPickForm.tsx +9 -0
- package/mobile/src/components/RatesTable/renderDate.tsx +42 -0
- package/mobile/src/components/RatesTable/renderLink.tsx +8 -0
- package/mobile/src/hooks/useRates.ts +65 -0
- package/mobile/src/ui-kit/Rate/Rate.tsx +27 -0
- package/package.json +1 -1
- package/src/components/Blocks.mobile.ts +2 -0
- package/src/components/Blocks.ts +2 -0
- package/src/components/RatesTable/RatesTable.example.json +7 -0
- package/src/components/RatesTable/RatesTable.fixture.mobile.tsx +26 -0
- package/src/components/RatesTable/RatesTable.fixture.tsx +26 -0
- package/src/components/RatesTable/RatesTable.tsx +38 -0
- package/src/components/RatesTable/RatesTable.ui.json +7 -0
- package/src/components/RatesTable/RatesTableContent.ts +13 -0
- package/src/components/RatesTable/RatesTableItem.tsx +39 -0
- package/src/components/RatesTable/renderDataPickForm.tsx +9 -0
- package/src/components/RatesTable/renderDate.tsx +42 -0
- package/src/components/RatesTable/renderLink.tsx +8 -0
- package/src/hooks/useRates.ts +65 -0
- 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 @@
|
|
|
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,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,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,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,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,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
|
@@ -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
|
};
|
package/src/components/Blocks.ts
CHANGED
|
@@ -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,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
|
+
};
|