@doyourjob/gravity-ui-page-constructor 5.31.83 → 5.31.85
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/build/cjs/blocks/FilterBlock/FilterBlock.js +1 -1
- package/build/cjs/blocks/Header/SwitchingTitle/SwitchingTtitle.js +8 -5
- package/build/cjs/blocks/HighlightTable/HighlightTable.js +2 -2
- package/build/cjs/blocks/Reports/Reports.css +15 -0
- package/build/cjs/blocks/Reports/Reports.js +4 -16
- package/build/cjs/blocks/ReportsCards/ReportsCards.js +1 -1
- package/build/cjs/blocks/ReportsSections/Item/Item.css +3 -1
- package/build/cjs/blocks/ReportsSections/Item/Item.js +2 -2
- package/build/cjs/blocks/ReportsSections/ReportsSections.js +1 -1
- package/build/cjs/blocks/ReportsSections/Section/Section.js +2 -3
- package/build/cjs/blocks/Table/Table.js +3 -3
- package/build/cjs/components/Paginator/Paginator.js +16 -23
- package/build/cjs/components/Paginator/components/PaginatorItem.d.ts +1 -1
- package/build/cjs/components/Paginator/components/PaginatorItem.js +38 -26
- package/build/cjs/components/Paginator/types.d.ts +3 -3
- package/build/cjs/components/Paginator/utils.js +4 -13
- package/build/cjs/components/index.d.ts +0 -1
- package/build/cjs/components/index.js +1 -3
- package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
- package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.js +4 -4
- package/build/esm/blocks/FilterBlock/FilterBlock.js +1 -1
- package/build/esm/blocks/Header/SwitchingTitle/SwitchingTtitle.js +9 -6
- package/build/esm/blocks/HighlightTable/HighlightTable.js +2 -2
- package/build/esm/blocks/Reports/Reports.css +15 -0
- package/build/esm/blocks/Reports/Reports.js +5 -17
- package/build/esm/blocks/ReportsCards/ReportsCards.js +1 -1
- package/build/esm/blocks/ReportsSections/Item/Item.css +3 -1
- package/build/esm/blocks/ReportsSections/Item/Item.js +2 -2
- package/build/esm/blocks/ReportsSections/ReportsSections.js +1 -1
- package/build/esm/blocks/ReportsSections/Section/Section.js +2 -3
- package/build/esm/blocks/Table/Table.js +3 -3
- package/build/esm/components/Paginator/Paginator.js +17 -25
- package/build/esm/components/Paginator/components/PaginatorItem.d.ts +1 -1
- package/build/esm/components/Paginator/components/PaginatorItem.js +38 -26
- package/build/esm/components/Paginator/types.d.ts +3 -3
- package/build/esm/components/Paginator/utils.js +4 -13
- package/build/esm/components/index.d.ts +0 -1
- package/build/esm/components/index.js +0 -1
- package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
- package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.js +4 -4
- package/package.json +1 -1
- package/widget/index.js +1 -1
- package/build/cjs/components/ProgressCircular/ProgressCircular.css +0 -31
- package/build/cjs/components/ProgressCircular/ProgressCircular.d.ts +0 -8
- package/build/cjs/components/ProgressCircular/ProgressCircular.js +0 -14
- package/build/esm/components/ProgressCircular/ProgressCircular.css +0 -31
- package/build/esm/components/ProgressCircular/ProgressCircular.d.ts +0 -9
- package/build/esm/components/ProgressCircular/ProgressCircular.js +0 -11
|
@@ -32,7 +32,7 @@ const FilterBlock = ({ title, description, tags, tagButtonSize, allTag, items, c
|
|
|
32
32
|
}, [actualTag, items]);
|
|
33
33
|
return (react_1.default.createElement(components_1.AnimateBlock, { className: b(), animate: animated },
|
|
34
34
|
title && (react_1.default.createElement(components_1.Title, { className: b('title', { centered: centered }), title: title, subtitle: description })),
|
|
35
|
-
tabButtons.length && (react_1.default.createElement(grid_1.Row, null,
|
|
35
|
+
Boolean(tabButtons.length) && (react_1.default.createElement(grid_1.Row, null,
|
|
36
36
|
react_1.default.createElement(grid_1.Col, null,
|
|
37
37
|
react_1.default.createElement(ButtonTabs_1.default, { className: b('tabs', { centered: centered }), items: tabButtons, activeTab: selectedTag, onSelectTab: setSelectedTag, tabSize: tagButtonSize })))),
|
|
38
38
|
react_1.default.createElement(grid_1.Row, { className: b('block-container') },
|
|
@@ -9,23 +9,26 @@ const SwitchingTitle = (props) => {
|
|
|
9
9
|
const { text, switchingTime } = props;
|
|
10
10
|
const [currentIndex, setCurrentIndex] = (0, react_1.useState)(0);
|
|
11
11
|
const [opacity, setOpacity] = (0, react_1.useState)(1);
|
|
12
|
+
const timeoutsRef = (0, react_1.useRef)([]);
|
|
12
13
|
const texts = (0, react_1.useMemo)(() => (0, utils_2.partitionSwitchingTitleInput)(text), [text]);
|
|
13
14
|
const textSizesCommonMultiple = (0, react_1.useMemo)(() => texts.reduce((acc, curr) => acc * curr.length, 1), [texts]);
|
|
15
|
+
const clearAllTimeouts = () => {
|
|
16
|
+
timeoutsRef.current.forEach(clearTimeout);
|
|
17
|
+
timeoutsRef.current = [];
|
|
18
|
+
};
|
|
14
19
|
(0, react_1.useEffect)(() => {
|
|
15
|
-
|
|
20
|
+
clearAllTimeouts();
|
|
16
21
|
const intervalHandle = setInterval(() => {
|
|
17
22
|
setOpacity(0);
|
|
18
23
|
const timeout = setTimeout(() => {
|
|
19
24
|
setCurrentIndex((c) => (c + 1) % textSizesCommonMultiple);
|
|
20
25
|
setOpacity(1);
|
|
21
26
|
}, 200);
|
|
22
|
-
|
|
27
|
+
timeoutsRef.current.push(timeout);
|
|
23
28
|
}, switchingTime);
|
|
24
29
|
return () => {
|
|
25
30
|
clearInterval(intervalHandle);
|
|
26
|
-
|
|
27
|
-
clearTimeout(timeout);
|
|
28
|
-
}
|
|
31
|
+
clearAllTimeouts();
|
|
29
32
|
};
|
|
30
33
|
}, [texts, switchingTime, textSizesCommonMultiple]);
|
|
31
34
|
return (react_1.default.createElement("span", null, texts.map((lines, index) => (react_1.default.createElement("span", { className: b('title-part'), style: {
|
|
@@ -16,7 +16,7 @@ const getTextStyles = (contentSize) => {
|
|
|
16
16
|
return 'body-1';
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
|
-
const HighlightTableBlock = ({ title, description, table, legend, contentSize = 's', legendPosition = 'top', legendAlign = 'center', }) => {
|
|
19
|
+
const HighlightTableBlock = ({ title, description, table, legend = [], contentSize = 's', legendPosition = 'top', legendAlign = 'center', }) => {
|
|
20
20
|
const firstRow = table.content[0] || [];
|
|
21
21
|
const otherRows = table.content.slice(1);
|
|
22
22
|
const customColumnWidth = table.customColumnWidth || [];
|
|
@@ -77,7 +77,7 @@ const HighlightTableBlock = ({ title, description, table, legend, contentSize =
|
|
|
77
77
|
react_1.default.createElement(components_1.HTML, null, cell)));
|
|
78
78
|
})));
|
|
79
79
|
}, [table.customColumnWidth, table.highlighter, table.justify]);
|
|
80
|
-
const renderLegend = (0, react_1.useMemo)(() => (legend
|
|
80
|
+
const renderLegend = (0, react_1.useMemo)(() => Boolean(legend.length) && (react_1.default.createElement("div", { className: `${b('legend', {
|
|
81
81
|
left: legendAlign === 'left',
|
|
82
82
|
right: legendAlign === 'right',
|
|
83
83
|
'position-top': legendPosition === 'top',
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/* use this for style redefinitions to awoid problems with
|
|
2
2
|
unpredictable css rules order in build */
|
|
3
|
+
.pc-reports-block {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
}
|
|
3
7
|
.pc-reports-block__title {
|
|
4
8
|
margin-bottom: 24px;
|
|
5
9
|
}
|
|
@@ -9,6 +13,17 @@ unpredictable css rules order in build */
|
|
|
9
13
|
display: flex;
|
|
10
14
|
flex-wrap: wrap;
|
|
11
15
|
}
|
|
16
|
+
.pc-reports-block__loader {
|
|
17
|
+
align-self: center;
|
|
18
|
+
width: 48px;
|
|
19
|
+
height: 48px;
|
|
20
|
+
}
|
|
21
|
+
.pc-reports-block__loader > div {
|
|
22
|
+
border-color: var(--pc-color-progress-circular);
|
|
23
|
+
}
|
|
24
|
+
.pc-reports-block__paginator {
|
|
25
|
+
margin-top: 32px;
|
|
26
|
+
}
|
|
12
27
|
.pc-reports-block__items {
|
|
13
28
|
margin: 0;
|
|
14
29
|
padding: 0;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ReportsBlock = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
6
7
|
const components_1 = require("../../components");
|
|
7
|
-
const types_1 = require("../../components/Paginator/types");
|
|
8
8
|
const reportsContext_1 = require("../../context/reportsContext");
|
|
9
9
|
const utils_1 = require("../../utils");
|
|
10
10
|
const ReportsItem_1 = tslib_1.__importDefault(require("./ReportsItem/ReportsItem"));
|
|
@@ -39,7 +39,7 @@ const ReportsBlock = ({ title, typeKey, empty }) => {
|
|
|
39
39
|
: title, [title]);
|
|
40
40
|
const renderItems = (0, react_1.useMemo)(() => {
|
|
41
41
|
if (loading) {
|
|
42
|
-
return react_1.default.createElement(
|
|
42
|
+
return react_1.default.createElement(uikit_1.Spin, { size: "xl", className: b('loader') });
|
|
43
43
|
}
|
|
44
44
|
if (!paginatedItems.length) {
|
|
45
45
|
return react_1.default.createElement(components_1.EmptyPlug, { empty: empty });
|
|
@@ -47,23 +47,11 @@ const ReportsBlock = ({ title, typeKey, empty }) => {
|
|
|
47
47
|
return (react_1.default.createElement("ul", { className: b('items') }, paginatedItems.map((item, index) => (react_1.default.createElement("li", { key: index },
|
|
48
48
|
react_1.default.createElement(ReportsItem_1.default, Object.assign({}, item, { filesOutline: filesOutline })))))));
|
|
49
49
|
}, [empty, filesOutline, loading, paginatedItems]);
|
|
50
|
-
const handlePageChange = (0, react_1.useCallback)((index) => {
|
|
51
|
-
switch (index) {
|
|
52
|
-
case types_1.ArrowType.Prev:
|
|
53
|
-
setPage((prev) => prev - 1);
|
|
54
|
-
break;
|
|
55
|
-
case types_1.ArrowType.Next:
|
|
56
|
-
setPage((prev) => prev + 1);
|
|
57
|
-
break;
|
|
58
|
-
default:
|
|
59
|
-
setPage(index);
|
|
60
|
-
}
|
|
61
|
-
}, []);
|
|
62
50
|
return (react_1.default.createElement("div", { className: b() },
|
|
63
51
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
64
|
-
selects.length && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
52
|
+
Boolean(selects.length) && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
65
53
|
renderItems,
|
|
66
|
-
itemsPerPage && (react_1.default.createElement(components_1.Paginator, { page: page, itemsPerPage: itemsPerPage, totalItems: filteredItems.length, maxPages: Infinity, onPageChange:
|
|
54
|
+
itemsPerPage && (react_1.default.createElement(components_1.Paginator, { page: page, itemsPerPage: itemsPerPage, totalItems: filteredItems.length, maxPages: Infinity, onPageChange: setPage, className: b('paginator') }))));
|
|
67
55
|
};
|
|
68
56
|
exports.ReportsBlock = ReportsBlock;
|
|
69
57
|
exports.default = exports.ReportsBlock;
|
|
@@ -34,7 +34,7 @@ const ReportsCardsBlock = ({ title, typeKey, postscript, empty }) => {
|
|
|
34
34
|
: title;
|
|
35
35
|
return (react_1.default.createElement("div", { className: b() },
|
|
36
36
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
37
|
-
selects.length && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
37
|
+
Boolean(selects.length) && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
38
38
|
filteredItems.length ? (react_1.default.createElement(grid_1.Row, null, filteredItems.map((item, index) => (react_1.default.createElement(grid_1.Col, { key: index, sizes: cardsColSizes },
|
|
39
39
|
react_1.default.createElement(sub_blocks_1.AttachmentCard, Object.assign({}, item))))))) : (react_1.default.createElement(components_1.EmptyPlug, { empty: empty })),
|
|
40
40
|
postscript && (react_1.default.createElement(components_1.YFMWrapper, { className: b('postscript'), content: postscript, modifiers: { constructor: true, [`constructor-size-s`]: true } }))));
|
|
@@ -4,9 +4,11 @@ unpredictable css rules order in build */
|
|
|
4
4
|
padding: 24px 0;
|
|
5
5
|
display: flex;
|
|
6
6
|
align-items: center;
|
|
7
|
-
border-bottom: 1px solid var(--g-color-private-black-100-solid);
|
|
8
7
|
gap: 32px;
|
|
9
8
|
}
|
|
9
|
+
.pc-reports-sections-item + .pc-reports-sections-item {
|
|
10
|
+
border-top: 1px solid var(--g-color-private-black-100-solid);
|
|
11
|
+
}
|
|
10
12
|
.pc-reports-sections-item__wrap {
|
|
11
13
|
flex: 1;
|
|
12
14
|
}
|
|
@@ -6,10 +6,10 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
6
6
|
const components_1 = require("../../../components");
|
|
7
7
|
const utils_1 = require("../../../utils");
|
|
8
8
|
const b = (0, utils_1.block)('reports-sections-item');
|
|
9
|
-
const Item = ({ title, files }) => (react_1.default.createElement("
|
|
9
|
+
const Item = ({ title, files = [] }) => (react_1.default.createElement("li", { className: b() },
|
|
10
10
|
react_1.default.createElement("div", { className: b('wrap') },
|
|
11
11
|
react_1.default.createElement("div", { className: b('title') }, title)),
|
|
12
|
-
(files
|
|
12
|
+
Boolean(files.length) && (react_1.default.createElement("ul", { className: b('files') }, files.map((file) => (react_1.default.createElement("li", { key: file.link },
|
|
13
13
|
react_1.default.createElement(components_1.ReportFile, Object.assign({}, file, { outlined: true })))))))));
|
|
14
14
|
exports.Item = Item;
|
|
15
15
|
exports.default = exports.Item;
|
|
@@ -28,7 +28,7 @@ const ReportsSectionsBlock = ({ title, typeKey, empty }) => {
|
|
|
28
28
|
: title;
|
|
29
29
|
return (react_1.default.createElement("div", { className: b() },
|
|
30
30
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
31
|
-
selects.length && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
31
|
+
Boolean(selects.length) && (react_1.default.createElement("div", { className: b('select') }, selects.map(({ name, options }) => (react_1.default.createElement(components_1.Select, { key: name, name: name, options: options, onChange: handleChange }))))),
|
|
32
32
|
filteredItems.length ? (react_1.default.createElement("div", { className: b('sections') }, filteredItems.map((item, index) => (react_1.default.createElement(Section_1.default, Object.assign({ key: index }, item)))))) : (react_1.default.createElement(components_1.EmptyPlug, { empty: empty, className: b('empty') }))));
|
|
33
33
|
};
|
|
34
34
|
exports.ReportsSectionsBlock = ReportsSectionsBlock;
|
|
@@ -6,10 +6,9 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
6
6
|
const utils_1 = require("../../../utils");
|
|
7
7
|
const Item_1 = tslib_1.__importDefault(require("../Item/Item"));
|
|
8
8
|
const b = (0, utils_1.block)('reports-sections-section');
|
|
9
|
-
const Section = ({ title, date, items }) => (react_1.default.createElement("div", { className: b() },
|
|
9
|
+
const Section = ({ title, date, items = [] }) => (react_1.default.createElement("div", { className: b() },
|
|
10
10
|
date && react_1.default.createElement("div", { className: b('date') }, date),
|
|
11
11
|
title && react_1.default.createElement("h2", { className: b('title') }, title),
|
|
12
|
-
(items
|
|
13
|
-
react_1.default.createElement(Item_1.default, Object.assign({}, item)))))))));
|
|
12
|
+
Boolean(items.length) && (react_1.default.createElement("ul", { className: b('files') }, items.map((item, index) => (react_1.default.createElement(Item_1.default, Object.assign({ key: index }, item))))))));
|
|
14
13
|
exports.Section = Section;
|
|
15
14
|
exports.default = exports.Section;
|
|
@@ -11,7 +11,7 @@ const b = (0, utils_1.block)('table-block');
|
|
|
11
11
|
const bTable = (0, utils_1.block)('table');
|
|
12
12
|
const bScrollbar = (0, utils_1.block)('table-scrollbar');
|
|
13
13
|
const TableBlock = (props) => {
|
|
14
|
-
const { title, table, description, links, buttons } = props;
|
|
14
|
+
const { title, table, description, links = [], buttons = [] } = props;
|
|
15
15
|
const tableRef = (0, react_1.useRef)(null);
|
|
16
16
|
(0, react_1.useEffect)(() => {
|
|
17
17
|
var _a;
|
|
@@ -47,8 +47,8 @@ const TableBlock = (props) => {
|
|
|
47
47
|
description && (react_1.default.createElement("div", { className: b('description') },
|
|
48
48
|
react_1.default.createElement(uikit_1.Text, { variant: "body-2" },
|
|
49
49
|
react_1.default.createElement(components_1.HTML, null, description)))),
|
|
50
|
-
(links
|
|
51
|
-
(buttons
|
|
50
|
+
Boolean(links.length) && (react_1.default.createElement(components_1.Links, { className: b('bottomObject'), links: links })),
|
|
51
|
+
Boolean(buttons.length) && (react_1.default.createElement(components_1.Buttons, { className: b('bottomObject'), buttons: buttons }))),
|
|
52
52
|
react_1.default.createElement(grid_1.Col, { sizes: { [grid_1.GridColumnSize.Md]: 8, [grid_1.GridColumnSize.All]: 12 }, offsets: { [grid_1.GridColumnSize.Md]: 1 } },
|
|
53
53
|
react_1.default.createElement(components_1.Table, Object.assign({ className: b('table') }, table)))))));
|
|
54
54
|
};
|
|
@@ -12,32 +12,25 @@ const DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 5;
|
|
|
12
12
|
const Paginator = ({ itemsPerPage, totalItems, maxPages, page, className, onPageChange, pageCountForShowSupportButtons = DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS, }) => {
|
|
13
13
|
const pagesCount = (0, utils_1.getPagesCount)({ itemsPerPage, totalItems, maxPages });
|
|
14
14
|
const isShowSupportButtons = pagesCount > pageCountForShowSupportButtons;
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
const handlePageClick = (0, react_1.useCallback)((index) => {
|
|
16
|
+
switch (index) {
|
|
17
|
+
case types_1.ArrowType.Prev:
|
|
18
|
+
onPageChange((prev) => prev - 1);
|
|
19
|
+
break;
|
|
20
|
+
case types_1.ArrowType.Next:
|
|
21
|
+
onPageChange((prev) => prev + 1);
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
onPageChange(index);
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
key: types_1.ArrowType.Next,
|
|
28
|
-
dataKey: types_1.ArrowType.Next,
|
|
29
|
-
type: types_1.ArrowType.Next,
|
|
30
|
-
onClick: onPageChange,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return items;
|
|
34
|
-
}, [page, pagesCount, onPageChange, isShowSupportButtons]);
|
|
26
|
+
}, [onPageChange]);
|
|
27
|
+
const items = (0, utils_1.getPageConfigs)({ page, pagesCount, handlePageClick });
|
|
35
28
|
if (pagesCount <= 1)
|
|
36
29
|
return null;
|
|
37
|
-
return (react_1.default.createElement("ul", { className: b(null, className), role: "navigation", "aria-label": "Pagination Navigation" },
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
return (react_1.default.createElement("ul", { className: b(null, className), role: "navigation", "aria-label": "Pagination Navigation" },
|
|
31
|
+
isShowSupportButtons && page > 1 && (react_1.default.createElement(PaginatorItem_1.default, { dataKey: types_1.ArrowType.Prev, onClick: handlePageClick })),
|
|
32
|
+
items.map((item, index) => (react_1.default.createElement(PaginatorItem_1.default, Object.assign({ key: index }, item)))),
|
|
33
|
+
isShowSupportButtons && page < pagesCount && (react_1.default.createElement(PaginatorItem_1.default, { dataKey: types_1.ArrowType.Next, onClick: handlePageClick }))));
|
|
41
34
|
};
|
|
42
35
|
exports.Paginator = Paginator;
|
|
43
36
|
exports.default = exports.Paginator;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PaginatorItemProps } from '../types';
|
|
3
|
-
declare const _default: React.MemoExoticComponent<({ dataKey,
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ dataKey, active, onClick }: PaginatorItemProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
|
@@ -6,40 +6,52 @@ const icons_1 = require("../../../icons");
|
|
|
6
6
|
const cn_1 = require("../../../utils/cn");
|
|
7
7
|
const i18n_1 = require("../i18n");
|
|
8
8
|
const types_1 = require("../types");
|
|
9
|
+
const mapTypes = {
|
|
10
|
+
[types_1.ArrowType.Prev]: 'prev',
|
|
11
|
+
[types_1.ArrowType.Next]: 'next',
|
|
12
|
+
ellipsis: 'ellipsis',
|
|
13
|
+
};
|
|
9
14
|
const b = (0, cn_1.block)('paginator');
|
|
10
|
-
const PaginatorItem = ({ dataKey,
|
|
15
|
+
const PaginatorItem = ({ dataKey, active, onClick }) => {
|
|
11
16
|
const index = Number(dataKey);
|
|
12
17
|
const handleClick = (0, react_1.useCallback)(() => {
|
|
13
18
|
if (typeof onClick === 'function') {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
switch (dataKey) {
|
|
20
|
+
case types_1.ArrowType.Prev: {
|
|
21
|
+
onClick(types_1.ArrowType.Prev);
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
case types_1.ArrowType.Next: {
|
|
25
|
+
onClick(types_1.ArrowType.Next);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case 'ellipsis':
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
onClick(index);
|
|
32
|
+
break;
|
|
21
33
|
}
|
|
22
|
-
onClick(index);
|
|
23
34
|
}
|
|
24
|
-
}, [index, onClick
|
|
35
|
+
}, [dataKey, index, onClick]);
|
|
25
36
|
const renderContent = (0, react_1.useMemo)(() => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
switch (dataKey) {
|
|
38
|
+
case types_1.ArrowType.Prev: {
|
|
39
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
40
|
+
react_1.default.createElement(icons_1.ArrowLeftIcon, null),
|
|
41
|
+
react_1.default.createElement("span", null, (0, i18n_1.i18n)('prev'))));
|
|
42
|
+
}
|
|
43
|
+
case types_1.ArrowType.Next: {
|
|
44
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
45
|
+
react_1.default.createElement("span", null, (0, i18n_1.i18n)('next')),
|
|
46
|
+
react_1.default.createElement(icons_1.ArrowRightIcon, null)));
|
|
47
|
+
}
|
|
48
|
+
case 'ellipsis':
|
|
49
|
+
return '…';
|
|
50
|
+
default:
|
|
51
|
+
return index;
|
|
41
52
|
}
|
|
42
|
-
}, [
|
|
53
|
+
}, [dataKey, index]);
|
|
54
|
+
const type = (0, react_1.useMemo)(() => { var _a; return (_a = mapTypes[dataKey]) !== null && _a !== void 0 ? _a : 'page'; }, [dataKey]);
|
|
43
55
|
return (react_1.default.createElement("button", { className: b('item', { type, active }), "aria-current": active ? 'true' : undefined, onClick: handleClick }, renderContent));
|
|
44
56
|
};
|
|
45
57
|
exports.default = react_1.default.memo(PaginatorItem);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import type { ClassNameProps } from '../../models/common';
|
|
2
3
|
export interface PaginatorItemProps {
|
|
3
|
-
|
|
4
|
-
dataKey: string | ArrowType;
|
|
4
|
+
dataKey: string | ArrowType | 'ellipsis';
|
|
5
5
|
type?: string;
|
|
6
6
|
active?: boolean;
|
|
7
7
|
onClick?: (key: number | ArrowType) => void;
|
|
@@ -11,7 +11,7 @@ export type PaginatorProps = {
|
|
|
11
11
|
totalItems: number;
|
|
12
12
|
itemsPerPage: number;
|
|
13
13
|
maxPages: number;
|
|
14
|
-
onPageChange:
|
|
14
|
+
onPageChange: React.Dispatch<React.SetStateAction<number>>;
|
|
15
15
|
pageCountForShowSupportButtons?: number;
|
|
16
16
|
} & ClassNameProps;
|
|
17
17
|
export declare enum ArrowType {
|
|
@@ -5,20 +5,11 @@ const getPageConfigs = ({ page, pagesCount, handlePageClick, }) => {
|
|
|
5
5
|
const paginatorItems = [];
|
|
6
6
|
const addPage = (i) => {
|
|
7
7
|
paginatorItems.push({
|
|
8
|
-
key: String(i),
|
|
9
8
|
dataKey: String(i),
|
|
10
|
-
type: 'page',
|
|
11
9
|
active: page === i,
|
|
12
10
|
onClick: handlePageClick,
|
|
13
11
|
});
|
|
14
12
|
};
|
|
15
|
-
const addEllipsis = (key) => {
|
|
16
|
-
paginatorItems.push({
|
|
17
|
-
key,
|
|
18
|
-
dataKey: key,
|
|
19
|
-
type: 'ellipsis',
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
13
|
if (pagesCount <= 7) {
|
|
23
14
|
for (let i = 1; i <= pagesCount; i++) {
|
|
24
15
|
addPage(i);
|
|
@@ -29,24 +20,24 @@ const getPageConfigs = ({ page, pagesCount, handlePageClick, }) => {
|
|
|
29
20
|
for (let i = 1; i <= 5; i++) {
|
|
30
21
|
addPage(i);
|
|
31
22
|
}
|
|
32
|
-
|
|
23
|
+
paginatorItems.push({ dataKey: 'ellipsis' });
|
|
33
24
|
addPage(pagesCount);
|
|
34
25
|
return paginatorItems;
|
|
35
26
|
}
|
|
36
27
|
if (page >= pagesCount - 3) {
|
|
37
28
|
addPage(1);
|
|
38
|
-
|
|
29
|
+
paginatorItems.push({ dataKey: 'ellipsis' });
|
|
39
30
|
for (let i = pagesCount - 4; i <= pagesCount; i++) {
|
|
40
31
|
addPage(i);
|
|
41
32
|
}
|
|
42
33
|
return paginatorItems;
|
|
43
34
|
}
|
|
44
35
|
addPage(1);
|
|
45
|
-
|
|
36
|
+
paginatorItems.push({ dataKey: 'ellipsis' });
|
|
46
37
|
addPage(page - 1);
|
|
47
38
|
addPage(page);
|
|
48
39
|
addPage(page + 1);
|
|
49
|
-
|
|
40
|
+
paginatorItems.push({ dataKey: 'ellipsis' });
|
|
50
41
|
addPage(pagesCount);
|
|
51
42
|
return paginatorItems;
|
|
52
43
|
};
|
|
@@ -44,7 +44,6 @@ export { default as Tag } from './Tag/Tag';
|
|
|
44
44
|
export { default as ReportFile } from './ReportFile/ReportFile';
|
|
45
45
|
export { default as Select } from './Select/Select';
|
|
46
46
|
export { default as Paginator } from './Paginator/Paginator';
|
|
47
|
-
export { default as ProgressCircular } from './ProgressCircular/ProgressCircular';
|
|
48
47
|
export { default as EmptyPlug } from './EmptyPlug/EmptyPlug';
|
|
49
48
|
export type { RouterLinkProps } from './RouterLink/RouterLink';
|
|
50
49
|
export type { ImageBaseProps } from './ImageBase/ImageBase';
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EmptyPlug = exports.
|
|
6
|
+
exports.EmptyPlug = exports.Paginator = exports.Select = exports.ReportFile = exports.Tag = exports.InfiniteScroll = exports.YandexForm = exports.YFMWrapper = exports.VideoBlock = exports.UnpublishedLabel = exports.ToggleArrow = exports.Title = exports.Table = exports.RouterLink = exports.ReactPlayer = exports.OverflowScroller = exports.OutsideClick = exports.MetaInfo = exports.Media = exports.Links = exports.Link = exports.InnerForm = exports.ImageBase = exports.Image = exports.IconWrapper = exports.HTML = exports.HeaderBreadcrumbs = exports.FullWidthBackground = exports.FullscreenMedia = exports.FullscreenImage = exports.Foldable = exports.FileLink = exports.ErrorWrapper = exports.Control = exports.ContentList = exports.CardBase = exports.BrandFooter = exports.Buttons = exports.Button = exports.BlockBase = exports.BalancedMasonry = exports.BackLink = exports.BackgroundMedia = exports.BackgroundImage = exports.Author = exports.AnimateBlock = exports.Anchor = void 0;
|
|
7
7
|
var Anchor_1 = require("./Anchor/Anchor");
|
|
8
8
|
Object.defineProperty(exports, "Anchor", { enumerable: true, get: function () { return __importDefault(Anchor_1).default; } });
|
|
9
9
|
var AnimateBlock_1 = require("./AnimateBlock/AnimateBlock");
|
|
@@ -96,7 +96,5 @@ var Select_1 = require("./Select/Select");
|
|
|
96
96
|
Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(Select_1).default; } });
|
|
97
97
|
var Paginator_1 = require("./Paginator/Paginator");
|
|
98
98
|
Object.defineProperty(exports, "Paginator", { enumerable: true, get: function () { return __importDefault(Paginator_1).default; } });
|
|
99
|
-
var ProgressCircular_1 = require("./ProgressCircular/ProgressCircular");
|
|
100
|
-
Object.defineProperty(exports, "ProgressCircular", { enumerable: true, get: function () { return __importDefault(ProgressCircular_1).default; } });
|
|
101
99
|
var EmptyPlug_1 = require("./EmptyPlug/EmptyPlug");
|
|
102
100
|
Object.defineProperty(exports, "EmptyPlug", { enumerable: true, get: function () { return __importDefault(EmptyPlug_1).default; } });
|
|
@@ -57,14 +57,16 @@ unpredictable css rules order in build */
|
|
|
57
57
|
color: var(--pc-color-summary);
|
|
58
58
|
}
|
|
59
59
|
.pc-attachment-card__time {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
display: flex;
|
|
63
|
-
align-items: center;
|
|
60
|
+
display: inline-block;
|
|
61
|
+
vertical-align: middle;
|
|
64
62
|
}
|
|
65
63
|
.pc-attachment-card__dot {
|
|
66
64
|
background-color: var(--g-color-private-cool-grey-400);
|
|
67
65
|
border-radius: 100%;
|
|
68
66
|
width: 5px;
|
|
69
67
|
height: 5px;
|
|
68
|
+
display: inline-block;
|
|
69
|
+
vertical-align: middle;
|
|
70
|
+
margin-left: 8px;
|
|
71
|
+
margin-right: 8px;
|
|
70
72
|
}
|
|
@@ -30,7 +30,7 @@ const AttachmentCardItem = ({ icon, name, link, download, target }) => {
|
|
|
30
30
|
renderIcon,
|
|
31
31
|
react_1.default.createElement("div", { className: b('item-name') }, name)));
|
|
32
32
|
};
|
|
33
|
-
const AttachmentCard = ({ url, title, date, time, items, label, column, border, }) => {
|
|
33
|
+
const AttachmentCard = ({ url, title, date, time, items = [], label, column, border, }) => {
|
|
34
34
|
const titleProps = !title || typeof title === 'string'
|
|
35
35
|
? { text: title, textSize: 'm' }
|
|
36
36
|
: title;
|
|
@@ -41,10 +41,10 @@ const AttachmentCard = ({ url, title, date, time, items, label, column, border,
|
|
|
41
41
|
title && react_1.default.createElement(components_1.Title, { title: titleProps, colSizes: colSizes }),
|
|
42
42
|
date && (react_1.default.createElement("div", { className: b('date') },
|
|
43
43
|
date,
|
|
44
|
-
time && (react_1.default.createElement("
|
|
45
|
-
react_1.default.createElement("
|
|
44
|
+
time && (react_1.default.createElement("span", { className: b('time') },
|
|
45
|
+
react_1.default.createElement("span", { className: b('dot') }),
|
|
46
46
|
time)))))),
|
|
47
|
-
(items
|
|
47
|
+
Boolean(items.length) && (react_1.default.createElement(components_1.CardBase.Footer, { className: b('footer') },
|
|
48
48
|
react_1.default.createElement("ul", { className: b('items') }, items === null || items === void 0 ? void 0 : items.map((item, index) => (react_1.default.createElement("li", { key: index },
|
|
49
49
|
react_1.default.createElement(AttachmentCardItem, Object.assign({}, item))))))))));
|
|
50
50
|
};
|
|
@@ -30,7 +30,7 @@ const FilterBlock = ({ title, description, tags, tagButtonSize, allTag, items, c
|
|
|
30
30
|
}, [actualTag, items]);
|
|
31
31
|
return (React.createElement(AnimateBlock, { className: b(), animate: animated },
|
|
32
32
|
title && (React.createElement(Title, { className: b('title', { centered: centered }), title: title, subtitle: description })),
|
|
33
|
-
tabButtons.length && (React.createElement(Row, null,
|
|
33
|
+
Boolean(tabButtons.length) && (React.createElement(Row, null,
|
|
34
34
|
React.createElement(Col, null,
|
|
35
35
|
React.createElement(ButtonTabs, { className: b('tabs', { centered: centered }), items: tabButtons, activeTab: selectedTag, onSelectTab: setSelectedTag, tabSize: tagButtonSize })))),
|
|
36
36
|
React.createElement(Row, { className: b('block-container') },
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
|
1
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { block } from '../../../utils';
|
|
3
3
|
import { partitionSwitchingTitleInput } from '../utils';
|
|
4
4
|
import './SwitchingTitle.css';
|
|
@@ -7,23 +7,26 @@ const SwitchingTitle = (props) => {
|
|
|
7
7
|
const { text, switchingTime } = props;
|
|
8
8
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
9
9
|
const [opacity, setOpacity] = useState(1);
|
|
10
|
+
const timeoutsRef = useRef([]);
|
|
10
11
|
const texts = useMemo(() => partitionSwitchingTitleInput(text), [text]);
|
|
11
12
|
const textSizesCommonMultiple = useMemo(() => texts.reduce((acc, curr) => acc * curr.length, 1), [texts]);
|
|
13
|
+
const clearAllTimeouts = () => {
|
|
14
|
+
timeoutsRef.current.forEach(clearTimeout);
|
|
15
|
+
timeoutsRef.current = [];
|
|
16
|
+
};
|
|
12
17
|
useEffect(() => {
|
|
13
|
-
|
|
18
|
+
clearAllTimeouts();
|
|
14
19
|
const intervalHandle = setInterval(() => {
|
|
15
20
|
setOpacity(0);
|
|
16
21
|
const timeout = setTimeout(() => {
|
|
17
22
|
setCurrentIndex((c) => (c + 1) % textSizesCommonMultiple);
|
|
18
23
|
setOpacity(1);
|
|
19
24
|
}, 200);
|
|
20
|
-
|
|
25
|
+
timeoutsRef.current.push(timeout);
|
|
21
26
|
}, switchingTime);
|
|
22
27
|
return () => {
|
|
23
28
|
clearInterval(intervalHandle);
|
|
24
|
-
|
|
25
|
-
clearTimeout(timeout);
|
|
26
|
-
}
|
|
29
|
+
clearAllTimeouts();
|
|
27
30
|
};
|
|
28
31
|
}, [texts, switchingTime, textSizesCommonMultiple]);
|
|
29
32
|
return (React.createElement("span", null, texts.map((lines, index) => (React.createElement("span", { className: b('title-part'), style: {
|
|
@@ -13,7 +13,7 @@ const getTextStyles = (contentSize) => {
|
|
|
13
13
|
return 'body-1';
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
-
export const HighlightTableBlock = ({ title, description, table, legend, contentSize = 's', legendPosition = 'top', legendAlign = 'center', }) => {
|
|
16
|
+
export const HighlightTableBlock = ({ title, description, table, legend = [], contentSize = 's', legendPosition = 'top', legendAlign = 'center', }) => {
|
|
17
17
|
const firstRow = table.content[0] || [];
|
|
18
18
|
const otherRows = table.content.slice(1);
|
|
19
19
|
const customColumnWidth = table.customColumnWidth || [];
|
|
@@ -74,7 +74,7 @@ export const HighlightTableBlock = ({ title, description, table, legend, content
|
|
|
74
74
|
React.createElement(HTML, null, cell)));
|
|
75
75
|
})));
|
|
76
76
|
}, [table.customColumnWidth, table.highlighter, table.justify]);
|
|
77
|
-
const renderLegend = useMemo(() => (legend
|
|
77
|
+
const renderLegend = useMemo(() => Boolean(legend.length) && (React.createElement("div", { className: `${b('legend', {
|
|
78
78
|
left: legendAlign === 'left',
|
|
79
79
|
right: legendAlign === 'right',
|
|
80
80
|
'position-top': legendPosition === 'top',
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/* use this for style redefinitions to awoid problems with
|
|
2
2
|
unpredictable css rules order in build */
|
|
3
|
+
.pc-reports-block {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
}
|
|
3
7
|
.pc-reports-block__title {
|
|
4
8
|
margin-bottom: 24px;
|
|
5
9
|
}
|
|
@@ -9,6 +13,17 @@ unpredictable css rules order in build */
|
|
|
9
13
|
display: flex;
|
|
10
14
|
flex-wrap: wrap;
|
|
11
15
|
}
|
|
16
|
+
.pc-reports-block__loader {
|
|
17
|
+
align-self: center;
|
|
18
|
+
width: 48px;
|
|
19
|
+
height: 48px;
|
|
20
|
+
}
|
|
21
|
+
.pc-reports-block__loader > div {
|
|
22
|
+
border-color: var(--pc-color-progress-circular);
|
|
23
|
+
}
|
|
24
|
+
.pc-reports-block__paginator {
|
|
25
|
+
margin-top: 32px;
|
|
26
|
+
}
|
|
12
27
|
.pc-reports-block__items {
|
|
13
28
|
margin: 0;
|
|
14
29
|
padding: 0;
|