@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.
Files changed (48) hide show
  1. package/build/cjs/blocks/FilterBlock/FilterBlock.js +1 -1
  2. package/build/cjs/blocks/Header/SwitchingTitle/SwitchingTtitle.js +8 -5
  3. package/build/cjs/blocks/HighlightTable/HighlightTable.js +2 -2
  4. package/build/cjs/blocks/Reports/Reports.css +15 -0
  5. package/build/cjs/blocks/Reports/Reports.js +4 -16
  6. package/build/cjs/blocks/ReportsCards/ReportsCards.js +1 -1
  7. package/build/cjs/blocks/ReportsSections/Item/Item.css +3 -1
  8. package/build/cjs/blocks/ReportsSections/Item/Item.js +2 -2
  9. package/build/cjs/blocks/ReportsSections/ReportsSections.js +1 -1
  10. package/build/cjs/blocks/ReportsSections/Section/Section.js +2 -3
  11. package/build/cjs/blocks/Table/Table.js +3 -3
  12. package/build/cjs/components/Paginator/Paginator.js +16 -23
  13. package/build/cjs/components/Paginator/components/PaginatorItem.d.ts +1 -1
  14. package/build/cjs/components/Paginator/components/PaginatorItem.js +38 -26
  15. package/build/cjs/components/Paginator/types.d.ts +3 -3
  16. package/build/cjs/components/Paginator/utils.js +4 -13
  17. package/build/cjs/components/index.d.ts +0 -1
  18. package/build/cjs/components/index.js +1 -3
  19. package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
  20. package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.js +4 -4
  21. package/build/esm/blocks/FilterBlock/FilterBlock.js +1 -1
  22. package/build/esm/blocks/Header/SwitchingTitle/SwitchingTtitle.js +9 -6
  23. package/build/esm/blocks/HighlightTable/HighlightTable.js +2 -2
  24. package/build/esm/blocks/Reports/Reports.css +15 -0
  25. package/build/esm/blocks/Reports/Reports.js +5 -17
  26. package/build/esm/blocks/ReportsCards/ReportsCards.js +1 -1
  27. package/build/esm/blocks/ReportsSections/Item/Item.css +3 -1
  28. package/build/esm/blocks/ReportsSections/Item/Item.js +2 -2
  29. package/build/esm/blocks/ReportsSections/ReportsSections.js +1 -1
  30. package/build/esm/blocks/ReportsSections/Section/Section.js +2 -3
  31. package/build/esm/blocks/Table/Table.js +3 -3
  32. package/build/esm/components/Paginator/Paginator.js +17 -25
  33. package/build/esm/components/Paginator/components/PaginatorItem.d.ts +1 -1
  34. package/build/esm/components/Paginator/components/PaginatorItem.js +38 -26
  35. package/build/esm/components/Paginator/types.d.ts +3 -3
  36. package/build/esm/components/Paginator/utils.js +4 -13
  37. package/build/esm/components/index.d.ts +0 -1
  38. package/build/esm/components/index.js +0 -1
  39. package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
  40. package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.js +4 -4
  41. package/package.json +1 -1
  42. package/widget/index.js +1 -1
  43. package/build/cjs/components/ProgressCircular/ProgressCircular.css +0 -31
  44. package/build/cjs/components/ProgressCircular/ProgressCircular.d.ts +0 -8
  45. package/build/cjs/components/ProgressCircular/ProgressCircular.js +0 -14
  46. package/build/esm/components/ProgressCircular/ProgressCircular.css +0 -31
  47. package/build/esm/components/ProgressCircular/ProgressCircular.d.ts +0 -9
  48. 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
- const timeouts = [];
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
- timeouts.push(timeout);
27
+ timeoutsRef.current.push(timeout);
23
28
  }, switchingTime);
24
29
  return () => {
25
30
  clearInterval(intervalHandle);
26
- for (const timeout of timeouts) {
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 === null || legend === void 0 ? void 0 : legend.length) && (react_1.default.createElement("div", { className: `${b('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(components_1.ProgressCircular, null);
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: handlePageChange }))));
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("div", { className: b() },
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 === null || files === void 0 ? void 0 : files.length) && (react_1.default.createElement("ul", { className: b('files') }, files.map((file) => (react_1.default.createElement("li", { key: file.link },
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 === null || items === void 0 ? void 0 : items.length) && (react_1.default.createElement("ul", { className: b('files') }, items.map((item, index) => (react_1.default.createElement("li", { key: index },
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 === null || links === void 0 ? void 0 : links.length) && react_1.default.createElement(components_1.Links, { className: b('bottomObject'), links: links }),
51
- (buttons === null || buttons === void 0 ? void 0 : buttons.length) && (react_1.default.createElement(components_1.Buttons, { className: b('bottomObject'), buttons: 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 paginatorItems = (0, react_1.useMemo)(() => {
16
- const items = (0, utils_1.getPageConfigs)({ page, pagesCount, handlePageClick: onPageChange });
17
- if (isShowSupportButtons && page > 1) {
18
- items.unshift({
19
- key: types_1.ArrowType.Prev,
20
- dataKey: types_1.ArrowType.Prev,
21
- type: types_1.ArrowType.Prev,
22
- onClick: onPageChange,
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
- if (isShowSupportButtons && page < pagesCount) {
26
- items.push({
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" }, paginatorItems.map((_a) => {
38
- var { key } = _a, rest = tslib_1.__rest(_a, ["key"]);
39
- return (react_1.default.createElement(PaginatorItem_1.default, Object.assign({ key: `page_${key}` }, rest)));
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, type, active, onClick }: PaginatorItemProps) => JSX.Element>;
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, type, active, onClick }) => {
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
- if (type === types_1.ArrowType.Prev) {
15
- onClick(types_1.ArrowType.Prev);
16
- return;
17
- }
18
- if (type === types_1.ArrowType.Next) {
19
- onClick(types_1.ArrowType.Next);
20
- return;
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, type]);
35
+ }, [dataKey, index, onClick]);
25
36
  const renderContent = (0, react_1.useMemo)(() => {
26
- if (type === 'ellipsis') {
27
- return '…';
28
- }
29
- else if (type === types_1.ArrowType.Prev) {
30
- return (react_1.default.createElement(react_1.default.Fragment, null,
31
- react_1.default.createElement(icons_1.ArrowLeftIcon, null),
32
- react_1.default.createElement("span", null, (0, i18n_1.i18n)('prev'))));
33
- }
34
- else if (type === types_1.ArrowType.Next) {
35
- return (react_1.default.createElement(react_1.default.Fragment, null,
36
- react_1.default.createElement("span", null, (0, i18n_1.i18n)('next')),
37
- react_1.default.createElement(icons_1.ArrowRightIcon, null)));
38
- }
39
- else {
40
- return index;
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
- }, [index, type]);
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
- key: string | ArrowType;
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: (page: number | ArrowType) => void;
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
- addEllipsis('ellipsis-right');
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
- addEllipsis('ellipsis-left');
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
- addEllipsis('ellipsis-left');
36
+ paginatorItems.push({ dataKey: 'ellipsis' });
46
37
  addPage(page - 1);
47
38
  addPage(page);
48
39
  addPage(page + 1);
49
- addEllipsis('ellipsis-right');
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.ProgressCircular = 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;
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
- padding-left: 8px;
61
- gap: 8px;
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("div", { className: b('time') },
45
- react_1.default.createElement("div", { className: b('dot') }),
44
+ time && (react_1.default.createElement("span", { className: b('time') },
45
+ react_1.default.createElement("span", { className: b('dot') }),
46
46
  time)))))),
47
- (items === null || items === void 0 ? void 0 : items.length) && (react_1.default.createElement(components_1.CardBase.Footer, { className: b('footer') },
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
- const timeouts = [];
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
- timeouts.push(timeout);
25
+ timeoutsRef.current.push(timeout);
21
26
  }, switchingTime);
22
27
  return () => {
23
28
  clearInterval(intervalHandle);
24
- for (const timeout of timeouts) {
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 === null || legend === void 0 ? void 0 : legend.length) && (React.createElement("div", { className: `${b('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;