@doyourjob/gravity-ui-page-constructor 5.31.84 → 5.31.86
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/Header/SwitchingTitle/SwitchingTtitle.js +8 -5
- package/build/cjs/blocks/Reports/Reports.css +14 -5
- package/build/cjs/blocks/Reports/Reports.js +5 -16
- package/build/cjs/blocks/ReportsCards/ReportsCards.css +0 -6
- package/build/cjs/blocks/ReportsCards/ReportsCards.js +2 -1
- package/build/cjs/blocks/ReportsSections/Item/Item.css +3 -1
- package/build/cjs/blocks/ReportsSections/Item/Item.js +1 -1
- package/build/cjs/blocks/ReportsSections/ReportsSections.css +0 -6
- package/build/cjs/blocks/ReportsSections/ReportsSections.js +2 -1
- package/build/cjs/blocks/ReportsSections/Section/Section.js +1 -2
- package/build/cjs/components/FeedHeader/Controls/Controls.css +0 -45
- package/build/cjs/components/FeedHeader/Controls/Controls.js +10 -38
- package/build/cjs/components/Filters/FilterInput/FilterInput.css +5 -0
- package/build/cjs/components/Filters/FilterInput/FilterInput.d.ts +8 -0
- package/build/cjs/components/Filters/FilterInput/FilterInput.js +9 -0
- package/build/cjs/components/Filters/FilterMultipleSelect/FilterMultipleSelect.css +47 -0
- package/build/cjs/components/Filters/FilterMultipleSelect/FilterMultipleSelect.d.ts +10 -0
- package/build/cjs/components/Filters/FilterMultipleSelect/FilterMultipleSelect.js +27 -0
- package/build/cjs/components/Filters/FilterSelect/FilterSelect.css +22 -0
- package/build/cjs/components/Filters/FilterSelect/FilterSelect.d.ts +9 -0
- package/build/cjs/components/Filters/FilterSelect/FilterSelect.js +24 -0
- package/build/cjs/components/Filters/FilterSelects/FilterSelects.css +13 -0
- package/build/cjs/components/Filters/FilterSelects/FilterSelects.d.ts +8 -0
- package/build/cjs/components/Filters/FilterSelects/FilterSelects.js +20 -0
- package/build/{esm/components/FeedHeader → cjs/components/Filters}/Search/Search.css +7 -7
- package/build/cjs/components/{FeedHeader → Filters}/Search/Search.d.ts +2 -1
- package/build/cjs/components/{FeedHeader → Filters}/Search/Search.js +4 -5
- package/build/cjs/components/{FeedHeader → Filters}/SelectOption/SelectOption.css +1 -1
- package/build/cjs/components/{FeedHeader → Filters}/SelectOption/SelectOption.js +1 -1
- package/build/cjs/components/{FeedHeader → Filters}/Switcher/Switcher.css +15 -15
- package/build/cjs/components/{FeedHeader → Filters}/Switcher/Switcher.js +1 -1
- package/build/cjs/components/{FeedHeader/Controls → Filters}/customRenders.d.ts +6 -2
- package/build/cjs/components/Filters/customRenders.js +26 -0
- 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 -2
- package/build/cjs/components/index.js +1 -5
- package/build/cjs/models/constructor-items/common.d.ts +1 -1
- package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
- package/build/cjs/sub-blocks/AttachmentCard/AttachmentCard.js +2 -2
- package/build/esm/blocks/Header/SwitchingTitle/SwitchingTtitle.js +9 -6
- package/build/esm/blocks/Reports/Reports.css +14 -5
- package/build/esm/blocks/Reports/Reports.js +6 -17
- package/build/esm/blocks/ReportsCards/ReportsCards.css +0 -6
- package/build/esm/blocks/ReportsCards/ReportsCards.js +3 -2
- package/build/esm/blocks/ReportsSections/Item/Item.css +3 -1
- package/build/esm/blocks/ReportsSections/Item/Item.js +1 -1
- package/build/esm/blocks/ReportsSections/ReportsSections.css +0 -6
- package/build/esm/blocks/ReportsSections/ReportsSections.js +3 -2
- package/build/esm/blocks/ReportsSections/Section/Section.js +1 -2
- package/build/esm/components/FeedHeader/Controls/Controls.css +0 -45
- package/build/esm/components/FeedHeader/Controls/Controls.js +11 -39
- package/build/esm/components/Filters/FilterInput/FilterInput.css +5 -0
- package/build/esm/components/Filters/FilterInput/FilterInput.d.ts +9 -0
- package/build/esm/components/Filters/FilterInput/FilterInput.js +7 -0
- package/build/esm/components/Filters/FilterMultipleSelect/FilterMultipleSelect.css +47 -0
- package/build/esm/components/Filters/FilterMultipleSelect/FilterMultipleSelect.d.ts +11 -0
- package/build/esm/components/Filters/FilterMultipleSelect/FilterMultipleSelect.js +25 -0
- package/build/esm/components/Filters/FilterSelect/FilterSelect.css +22 -0
- package/build/esm/components/Filters/FilterSelect/FilterSelect.d.ts +10 -0
- package/build/esm/components/Filters/FilterSelect/FilterSelect.js +22 -0
- package/build/esm/components/Filters/FilterSelects/FilterSelects.css +13 -0
- package/build/esm/components/Filters/FilterSelects/FilterSelects.d.ts +9 -0
- package/build/esm/components/Filters/FilterSelects/FilterSelects.js +16 -0
- package/build/{cjs/components/FeedHeader → esm/components/Filters}/Search/Search.css +7 -7
- package/build/esm/components/{FeedHeader → Filters}/Search/Search.d.ts +2 -1
- package/build/esm/components/{FeedHeader → Filters}/Search/Search.js +4 -5
- package/build/esm/components/{FeedHeader → Filters}/SelectOption/SelectOption.css +1 -1
- package/build/esm/components/{FeedHeader → Filters}/SelectOption/SelectOption.js +1 -1
- package/build/esm/components/{FeedHeader → Filters}/Switcher/Switcher.css +15 -15
- package/build/esm/components/{FeedHeader → Filters}/Switcher/Switcher.js +1 -1
- package/build/esm/components/{FeedHeader/Controls → Filters}/customRenders.d.ts +6 -3
- package/build/esm/components/{FeedHeader/Controls → Filters}/customRenders.js +7 -8
- 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 -2
- package/build/esm/components/index.js +0 -2
- package/build/esm/models/constructor-items/common.d.ts +1 -1
- package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.css +6 -4
- package/build/esm/sub-blocks/AttachmentCard/AttachmentCard.js +2 -2
- package/package.json +1 -1
- package/server/models/constructor-items/common.d.ts +1 -1
- package/widget/index.js +1 -1
- package/build/cjs/components/FeedHeader/Controls/customRenders.js +0 -26
- 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/cjs/components/Select/Select.css +0 -22
- package/build/cjs/components/Select/Select.d.ts +0 -7
- package/build/cjs/components/Select/Select.js +0 -13
- 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
- package/build/esm/components/Select/Select.css +0 -22
- package/build/esm/components/Select/Select.d.ts +0 -8
- package/build/esm/components/Select/Select.js +0 -11
- /package/build/cjs/components/{FeedHeader → Filters}/SelectOption/SelectOption.d.ts +0 -0
- /package/build/cjs/components/{FeedHeader → Filters}/Switcher/Switcher.d.ts +0 -0
- /package/build/esm/components/{FeedHeader → Filters}/SelectOption/SelectOption.d.ts +0 -0
- /package/build/esm/components/{FeedHeader → Filters}/Switcher/Switcher.d.ts +0 -0
|
@@ -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: {
|
|
@@ -1,13 +1,22 @@
|
|
|
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
|
}
|
|
6
|
-
.pc-reports-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
.pc-reports-block__loader {
|
|
11
|
+
align-self: center;
|
|
12
|
+
width: 48px;
|
|
13
|
+
height: 48px;
|
|
14
|
+
}
|
|
15
|
+
.pc-reports-block__loader > div {
|
|
16
|
+
border-color: var(--pc-color-progress-circular);
|
|
17
|
+
}
|
|
18
|
+
.pc-reports-block__paginator {
|
|
19
|
+
margin-top: 32px;
|
|
11
20
|
}
|
|
12
21
|
.pc-reports-block__items {
|
|
13
22
|
margin: 0;
|
|
@@ -3,8 +3,9 @@ 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
|
|
8
|
+
const FilterSelects_1 = tslib_1.__importDefault(require("../../components/Filters/FilterSelects/FilterSelects"));
|
|
8
9
|
const reportsContext_1 = require("../../context/reportsContext");
|
|
9
10
|
const utils_1 = require("../../utils");
|
|
10
11
|
const ReportsItem_1 = tslib_1.__importDefault(require("./ReportsItem/ReportsItem"));
|
|
@@ -39,7 +40,7 @@ const ReportsBlock = ({ title, typeKey, empty }) => {
|
|
|
39
40
|
: title, [title]);
|
|
40
41
|
const renderItems = (0, react_1.useMemo)(() => {
|
|
41
42
|
if (loading) {
|
|
42
|
-
return react_1.default.createElement(
|
|
43
|
+
return react_1.default.createElement(uikit_1.Spin, { size: "xl", className: b('loader') });
|
|
43
44
|
}
|
|
44
45
|
if (!paginatedItems.length) {
|
|
45
46
|
return react_1.default.createElement(components_1.EmptyPlug, { empty: empty });
|
|
@@ -47,23 +48,11 @@ const ReportsBlock = ({ title, typeKey, empty }) => {
|
|
|
47
48
|
return (react_1.default.createElement("ul", { className: b('items') }, paginatedItems.map((item, index) => (react_1.default.createElement("li", { key: index },
|
|
48
49
|
react_1.default.createElement(ReportsItem_1.default, Object.assign({}, item, { filesOutline: filesOutline })))))));
|
|
49
50
|
}, [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
51
|
return (react_1.default.createElement("div", { className: b() },
|
|
63
52
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
64
|
-
|
|
53
|
+
react_1.default.createElement(FilterSelects_1.default, { selects: selects, filters: localFilters, handleChange: handleChange }),
|
|
65
54
|
renderItems,
|
|
66
|
-
itemsPerPage && (react_1.default.createElement(components_1.Paginator, { page: page, itemsPerPage: itemsPerPage, totalItems: filteredItems.length, maxPages: Infinity, onPageChange:
|
|
55
|
+
itemsPerPage && (react_1.default.createElement(components_1.Paginator, { page: page, itemsPerPage: itemsPerPage, totalItems: filteredItems.length, maxPages: Infinity, onPageChange: setPage, className: b('paginator') }))));
|
|
67
56
|
};
|
|
68
57
|
exports.ReportsBlock = ReportsBlock;
|
|
69
58
|
exports.default = exports.ReportsBlock;
|
|
@@ -3,12 +3,6 @@ unpredictable css rules order in build */
|
|
|
3
3
|
.pc-reports-cards-block__title {
|
|
4
4
|
margin-bottom: 24px;
|
|
5
5
|
}
|
|
6
|
-
.pc-reports-cards-block__select {
|
|
7
|
-
margin-bottom: 32px;
|
|
8
|
-
gap: 16px;
|
|
9
|
-
display: flex;
|
|
10
|
-
flex-wrap: wrap;
|
|
11
|
-
}
|
|
12
6
|
.pc-reports-cards-block__postscript {
|
|
13
7
|
font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
|
|
14
8
|
line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
|
|
@@ -4,6 +4,7 @@ exports.ReportsCardsBlock = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const components_1 = require("../../components");
|
|
7
|
+
const FilterSelects_1 = tslib_1.__importDefault(require("../../components/Filters/FilterSelects/FilterSelects"));
|
|
7
8
|
const reportsCardsContext_1 = require("../../context/reportsCardsContext");
|
|
8
9
|
const grid_1 = require("../../grid");
|
|
9
10
|
const sub_blocks_1 = require("../../sub-blocks");
|
|
@@ -34,7 +35,7 @@ const ReportsCardsBlock = ({ title, typeKey, postscript, empty }) => {
|
|
|
34
35
|
: title;
|
|
35
36
|
return (react_1.default.createElement("div", { className: b() },
|
|
36
37
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
37
|
-
|
|
38
|
+
react_1.default.createElement(FilterSelects_1.default, { selects: selects, filters: localFilters, handleChange: handleChange }),
|
|
38
39
|
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
40
|
react_1.default.createElement(sub_blocks_1.AttachmentCard, Object.assign({}, item))))))) : (react_1.default.createElement(components_1.EmptyPlug, { empty: empty })),
|
|
40
41
|
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,7 +6,7 @@ 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
12
|
Boolean(files.length) && (react_1.default.createElement("ul", { className: b('files') }, files.map((file) => (react_1.default.createElement("li", { key: file.link },
|
|
@@ -3,12 +3,6 @@ unpredictable css rules order in build */
|
|
|
3
3
|
.pc-reports-sections-block__title {
|
|
4
4
|
margin-bottom: 24px;
|
|
5
5
|
}
|
|
6
|
-
.pc-reports-sections-block__select {
|
|
7
|
-
margin-bottom: 32px;
|
|
8
|
-
gap: 16px;
|
|
9
|
-
display: flex;
|
|
10
|
-
flex-wrap: wrap;
|
|
11
|
-
}
|
|
12
6
|
.pc-reports-sections-block__sections {
|
|
13
7
|
display: flex;
|
|
14
8
|
flex-direction: column;
|
|
@@ -4,6 +4,7 @@ exports.ReportsSectionsBlock = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const components_1 = require("../../components");
|
|
7
|
+
const FilterSelects_1 = tslib_1.__importDefault(require("../../components/Filters/FilterSelects/FilterSelects"));
|
|
7
8
|
const reportsSectionsContext_1 = require("../../context/reportsSectionsContext");
|
|
8
9
|
const utils_1 = require("../../utils");
|
|
9
10
|
const Section_1 = tslib_1.__importDefault(require("./Section/Section"));
|
|
@@ -28,7 +29,7 @@ const ReportsSectionsBlock = ({ title, typeKey, empty }) => {
|
|
|
28
29
|
: title;
|
|
29
30
|
return (react_1.default.createElement("div", { className: b() },
|
|
30
31
|
title && react_1.default.createElement(components_1.Title, { className: b('title'), title: titleProps, colSizes: titleColSizes }),
|
|
31
|
-
|
|
32
|
+
react_1.default.createElement(FilterSelects_1.default, { selects: selects, filters: localFilters, handleChange: handleChange }),
|
|
32
33
|
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
34
|
};
|
|
34
35
|
exports.ReportsSectionsBlock = ReportsSectionsBlock;
|
|
@@ -9,7 +9,6 @@ const b = (0, utils_1.block)('reports-sections-section');
|
|
|
9
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
|
-
Boolean(items.length) && (react_1.default.createElement("ul", { className: b('files') }, items.map((item, index) => (react_1.default.createElement(
|
|
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;
|
|
@@ -20,51 +20,6 @@ unpredictable css rules order in build */
|
|
|
20
20
|
font-size: var(--g-text-display-4-font-size, var(--pc-text-display-4-font-size));
|
|
21
21
|
line-height: var(--g-text-display-4-line-height, var(--pc-text-display-4-line-height));
|
|
22
22
|
}
|
|
23
|
-
.pc-feed-header-controls__filter-input, .pc-feed-header-controls__filter-select {
|
|
24
|
-
width: 100%;
|
|
25
|
-
}
|
|
26
|
-
.pc-feed-header-controls__popup {
|
|
27
|
-
max-height: 500px;
|
|
28
|
-
border-radius: 12px;
|
|
29
|
-
}
|
|
30
|
-
.pc-feed-header-controls__popup .g-select-list::-webkit-scrollbar {
|
|
31
|
-
display: none;
|
|
32
|
-
}
|
|
33
|
-
.pc-feed-header-controls__popup .g-select-list .g-list {
|
|
34
|
-
max-height: calc(500px - var(--g-text-body-3-line-height) - 12px);
|
|
35
|
-
}
|
|
36
|
-
.pc-feed-header-controls__popup .g-list__item {
|
|
37
|
-
margin: 4px;
|
|
38
|
-
border-radius: 8px;
|
|
39
|
-
}
|
|
40
|
-
.pc-feed-header-controls__popup_mobile {
|
|
41
|
-
max-height: inherit;
|
|
42
|
-
}
|
|
43
|
-
.pc-feed-header-controls__popup_mobile .pc-feed-header-controls__popup-filter {
|
|
44
|
-
position: relative;
|
|
45
|
-
border: none;
|
|
46
|
-
}
|
|
47
|
-
.pc-feed-header-controls__popup_mobile .pc-feed-header-controls__popup-filter::before {
|
|
48
|
-
position: absolute;
|
|
49
|
-
bottom: 0px;
|
|
50
|
-
left: 50%;
|
|
51
|
-
width: 100vw;
|
|
52
|
-
height: 2px;
|
|
53
|
-
content: "";
|
|
54
|
-
border-bottom: 2px solid var(--g-color-line-generic);
|
|
55
|
-
border-bottom-right-radius: 0;
|
|
56
|
-
border-bottom-left-radius: 0;
|
|
57
|
-
transform: translateX(-50%);
|
|
58
|
-
}
|
|
59
|
-
.pc-feed-header-controls__popup-filter {
|
|
60
|
-
padding: 4px 12px;
|
|
61
|
-
font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
|
|
62
|
-
line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
|
|
63
|
-
border: none;
|
|
64
|
-
border-bottom: 1px solid var(--g-color-line-generic);
|
|
65
|
-
border-bottom-right-radius: 0;
|
|
66
|
-
border-bottom-left-radius: 0;
|
|
67
|
-
}
|
|
68
23
|
.pc-feed-header-controls__filter-item {
|
|
69
24
|
flex-grow: 1;
|
|
70
25
|
min-width: 230px;
|
|
@@ -3,44 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Controls = 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");
|
|
7
6
|
const feedHeaderContext_1 = require("../../../context/feedHeaderContext");
|
|
8
|
-
const mobileContext_1 = require("../../../context/mobileContext");
|
|
9
7
|
const utils_1 = require("../../../utils");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
8
|
+
const FilterInput_1 = tslib_1.__importDefault(require("../../Filters/FilterInput/FilterInput"));
|
|
9
|
+
const FilterMultipleSelect_1 = tslib_1.__importDefault(require("../../Filters/FilterMultipleSelect/FilterMultipleSelect"));
|
|
10
|
+
const FilterSelect_1 = tslib_1.__importDefault(require("../../Filters/FilterSelect/FilterSelect"));
|
|
11
|
+
const i18n_1 = require("../i18n");
|
|
12
12
|
const b = (0, utils_1.block)('feed-header-controls');
|
|
13
|
-
const VIRTUALIZATION_THRESHOLD = 1000;
|
|
14
|
-
const FilterInput = ({ value, onChange, label, }) => (react_1.default.createElement("div", { className: b('filter-item') },
|
|
15
|
-
react_1.default.createElement(Search_1.Search, { className: b('filter-input'), placeholder: label, initialValue: value, onSubmit: onChange })));
|
|
16
|
-
const FilterMultipleSelect = ({ label, value, onChange, items = [], }) => {
|
|
17
|
-
const isMobile = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
18
|
-
const handleUpdate = (selected) => {
|
|
19
|
-
const asString = selected.join(',');
|
|
20
|
-
onChange(asString);
|
|
21
|
-
};
|
|
22
|
-
const valueLocal = (0, react_1.useMemo)(() => (value ? [...value.split(',')] : []), [value]);
|
|
23
|
-
return (react_1.default.createElement("div", { className: b('filter-item') },
|
|
24
|
-
react_1.default.createElement(uikit_1.Select, { className: b('filter-select'), size: "xl", options: items, defaultValue: [], value: valueLocal, onUpdate: handleUpdate, popupClassName: b('popup', { mobile: isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
|
25
|
-
initial: valueLocal,
|
|
26
|
-
list: items,
|
|
27
|
-
defaultLabel: label || '',
|
|
28
|
-
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption, renderFilter: customRenders_1.renderFilter, multiple: true, filterable: true, hasClear: true })));
|
|
29
|
-
};
|
|
30
|
-
const FilterSelect = ({ label, value, onChange, items = [], }) => {
|
|
31
|
-
const isMobile = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
32
|
-
const handleUpdate = (selected) => {
|
|
33
|
-
const isEmpty = selected.some((tag) => tag === 'empty');
|
|
34
|
-
onChange(isEmpty ? '' : selected[0]);
|
|
35
|
-
};
|
|
36
|
-
const valueLocal = (0, react_1.useMemo)(() => (value ? [value] : []), [value]);
|
|
37
|
-
return (react_1.default.createElement("div", { className: b('filter-item') },
|
|
38
|
-
react_1.default.createElement(uikit_1.Select, { className: b('filter-select'), size: "xl", options: items, defaultValue: [], value: valueLocal, onUpdate: handleUpdate, popupClassName: b('popup', { mobile: isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
|
39
|
-
initial: valueLocal,
|
|
40
|
-
list: items,
|
|
41
|
-
defaultLabel: label || '',
|
|
42
|
-
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption })));
|
|
43
|
-
};
|
|
44
13
|
const Filter = ({ name, type, value, label, items, }) => {
|
|
45
14
|
const { onChangeFilter } = (0, react_1.useContext)(feedHeaderContext_1.FeedHeaderFunctionsContext);
|
|
46
15
|
const handleChangeFilter = (0, react_1.useCallback)((data) => {
|
|
@@ -48,11 +17,14 @@ const Filter = ({ name, type, value, label, items, }) => {
|
|
|
48
17
|
}, [name, onChangeFilter]);
|
|
49
18
|
switch (type) {
|
|
50
19
|
case 'input':
|
|
51
|
-
return react_1.default.createElement(
|
|
20
|
+
return (react_1.default.createElement("div", { className: b('filter-item') },
|
|
21
|
+
react_1.default.createElement(FilterInput_1.default, { label: label, value: value, onChange: handleChangeFilter, clearText: (0, i18n_1.i18n)('clear') })));
|
|
52
22
|
case 'multiple-select':
|
|
53
|
-
return (react_1.default.createElement(
|
|
23
|
+
return (react_1.default.createElement("div", { className: b('filter-item') },
|
|
24
|
+
react_1.default.createElement(FilterMultipleSelect_1.default, { label: label, items: items, value: value, onChange: handleChangeFilter, filterText: (0, i18n_1.i18n)('search') })));
|
|
54
25
|
case 'select':
|
|
55
|
-
return (react_1.default.createElement(
|
|
26
|
+
return (react_1.default.createElement("div", { className: b('filter-item') },
|
|
27
|
+
react_1.default.createElement(FilterSelect_1.default, { label: label, items: items, value: value, onChange: handleChangeFilter })));
|
|
56
28
|
default:
|
|
57
29
|
return null;
|
|
58
30
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.MemoExoticComponent<({ value, onChange, label, clearText, }: {
|
|
3
|
+
value: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
label?: string | undefined;
|
|
6
|
+
clearText?: string | undefined;
|
|
7
|
+
}) => JSX.Element>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const Search_1 = require("../Search/Search");
|
|
7
|
+
const b = (0, utils_1.block)('filter-input');
|
|
8
|
+
const FilterInput = ({ value, onChange, label, clearText, }) => (react_1.default.createElement(Search_1.Search, { className: b('filter-input'), placeholder: label, initialValue: value, onSubmit: onChange, clearText: clearText }));
|
|
9
|
+
exports.default = react_1.default.memo(FilterInput);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
.pc-filter-multiple-select {
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
.pc-filter-multiple-select__popup {
|
|
7
|
+
max-height: 500px;
|
|
8
|
+
border-radius: 12px;
|
|
9
|
+
}
|
|
10
|
+
.pc-filter-multiple-select__popup .g-select-list::-webkit-scrollbar {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
.pc-filter-multiple-select__popup .g-select-list .g-list {
|
|
14
|
+
max-height: calc(500px - var(--g-text-body-3-line-height) - 12px);
|
|
15
|
+
}
|
|
16
|
+
.pc-filter-multiple-select__popup .g-list__item {
|
|
17
|
+
margin: 4px;
|
|
18
|
+
border-radius: 8px;
|
|
19
|
+
}
|
|
20
|
+
.pc-filter-multiple-select__popup_mobile {
|
|
21
|
+
max-height: inherit;
|
|
22
|
+
}
|
|
23
|
+
.pc-filter-multiple-select__popup_mobile .pc-filter-multiple-select__popup-filter {
|
|
24
|
+
position: relative;
|
|
25
|
+
border: none;
|
|
26
|
+
}
|
|
27
|
+
.pc-filter-multiple-select__popup_mobile .pc-filter-multiple-select__popup-filter::before {
|
|
28
|
+
position: absolute;
|
|
29
|
+
bottom: 0px;
|
|
30
|
+
left: 50%;
|
|
31
|
+
width: 100vw;
|
|
32
|
+
height: 2px;
|
|
33
|
+
content: "";
|
|
34
|
+
border-bottom: 2px solid var(--g-color-line-generic);
|
|
35
|
+
border-bottom-right-radius: 0;
|
|
36
|
+
border-bottom-left-radius: 0;
|
|
37
|
+
transform: translateX(-50%);
|
|
38
|
+
}
|
|
39
|
+
.pc-filter-multiple-select__popup-filter {
|
|
40
|
+
padding: 4px 12px;
|
|
41
|
+
font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
|
|
42
|
+
line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
|
|
43
|
+
border: none;
|
|
44
|
+
border-bottom: 1px solid var(--g-color-line-generic);
|
|
45
|
+
border-bottom-right-radius: 0;
|
|
46
|
+
border-bottom-left-radius: 0;
|
|
47
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FeedHeaderOption } from '../../../context/feedHeaderContext';
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ label, value, onChange, items, filterText, }: {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
label?: string | undefined;
|
|
7
|
+
items?: FeedHeaderOption[] | undefined;
|
|
8
|
+
filterText?: string | undefined;
|
|
9
|
+
}) => JSX.Element>;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
6
|
+
const mobileContext_1 = require("../../../context/mobileContext");
|
|
7
|
+
const utils_1 = require("../../../utils");
|
|
8
|
+
const customRenders_1 = require("../customRenders");
|
|
9
|
+
const b = (0, utils_1.block)('filter-multiple-select');
|
|
10
|
+
const VIRTUALIZATION_THRESHOLD = 1000;
|
|
11
|
+
const FilterMultipleSelect = ({ label, value, onChange, items = [], filterText, }) => {
|
|
12
|
+
const isMobile = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
13
|
+
const handleUpdate = (selected) => {
|
|
14
|
+
const asString = selected.join(',');
|
|
15
|
+
onChange(asString);
|
|
16
|
+
};
|
|
17
|
+
const valueLocal = (0, react_1.useMemo)(() => (value ? [...value.split(',')] : []), [value]);
|
|
18
|
+
return (react_1.default.createElement(uikit_1.Select, { className: b(), size: "xl", options: items, defaultValue: [], value: valueLocal, onUpdate: handleUpdate, popupClassName: b('popup', { mobile: isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
|
19
|
+
initial: valueLocal,
|
|
20
|
+
list: items,
|
|
21
|
+
defaultLabel: label || '',
|
|
22
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption, renderFilter: (0, customRenders_1.renderFilter)({
|
|
23
|
+
placeholder: filterText,
|
|
24
|
+
className: b('popup-filter'),
|
|
25
|
+
}), multiple: true, filterable: true, hasClear: true }));
|
|
26
|
+
};
|
|
27
|
+
exports.default = react_1.default.memo(FilterMultipleSelect);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
.pc-filter-select {
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
.pc-filter-select__popup {
|
|
7
|
+
max-height: 500px;
|
|
8
|
+
border-radius: 12px;
|
|
9
|
+
}
|
|
10
|
+
.pc-filter-select__popup .g-select-list::-webkit-scrollbar {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
.pc-filter-select__popup .g-select-list .g-list {
|
|
14
|
+
max-height: calc(500px - var(--g-text-body-3-line-height) - 12px);
|
|
15
|
+
}
|
|
16
|
+
.pc-filter-select__popup .g-list__item {
|
|
17
|
+
margin: 4px;
|
|
18
|
+
border-radius: 8px;
|
|
19
|
+
}
|
|
20
|
+
.pc-filter-select__popup_mobile {
|
|
21
|
+
max-height: inherit;
|
|
22
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FeedHeaderOption } from '../../../context/feedHeaderContext';
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ label, value, onChange, items, }: {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
label?: string | undefined;
|
|
7
|
+
items?: FeedHeaderOption[] | undefined;
|
|
8
|
+
}) => JSX.Element>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
6
|
+
const mobileContext_1 = require("../../../context/mobileContext");
|
|
7
|
+
const utils_1 = require("../../../utils");
|
|
8
|
+
const customRenders_1 = require("../customRenders");
|
|
9
|
+
const b = (0, utils_1.block)('filter-select');
|
|
10
|
+
const VIRTUALIZATION_THRESHOLD = 1000;
|
|
11
|
+
const FilterSelect = ({ label, value, onChange, items = [], }) => {
|
|
12
|
+
const isMobile = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
13
|
+
const handleUpdate = (selected) => {
|
|
14
|
+
const isEmpty = selected.some((tag) => tag === 'empty');
|
|
15
|
+
onChange(isEmpty ? '' : selected[0]);
|
|
16
|
+
};
|
|
17
|
+
const valueLocal = (0, react_1.useMemo)(() => (value ? [value] : []), [value]);
|
|
18
|
+
return (react_1.default.createElement(uikit_1.Select, { className: b(), size: "xl", options: items, defaultValue: [], value: valueLocal, onUpdate: handleUpdate, popupClassName: b('popup', { mobile: isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
|
19
|
+
initial: valueLocal,
|
|
20
|
+
list: items,
|
|
21
|
+
defaultLabel: label || '',
|
|
22
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption }));
|
|
23
|
+
};
|
|
24
|
+
exports.default = react_1.default.memo(FilterSelect);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
.pc-filter-selects {
|
|
4
|
+
margin-bottom: 32px;
|
|
5
|
+
gap: 16px;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-wrap: wrap;
|
|
8
|
+
}
|
|
9
|
+
.pc-filter-selects__select {
|
|
10
|
+
width: 240px;
|
|
11
|
+
--pc-color-border-switcher: var(--g-color-private-cool-grey-400-solid);
|
|
12
|
+
--pc-color-border-switcher-hover: var(--g-color-private-cool-grey-600-solid);
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SelectProps } from '../../../models';
|
|
2
|
+
interface FilterSelectsProps {
|
|
3
|
+
selects: SelectProps[];
|
|
4
|
+
filters: Record<string, string>;
|
|
5
|
+
handleChange: (name: string, value: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const FilterSelects: ({ selects, filters, handleChange }: FilterSelectsProps) => JSX.Element | null;
|
|
8
|
+
export default FilterSelects;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterSelects = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
const FilterSelect_1 = tslib_1.__importDefault(require("../FilterSelect/FilterSelect"));
|
|
8
|
+
const b = (0, utils_1.block)('filter-selects');
|
|
9
|
+
const SelectItem = ({ name, value, items, handleChange, }) => {
|
|
10
|
+
const handleChangeLocal = (0, react_1.useCallback)((data) => handleChange(name, data), [handleChange, name]);
|
|
11
|
+
return react_1.default.createElement(FilterSelect_1.default, { value: value, items: items, onChange: handleChangeLocal });
|
|
12
|
+
};
|
|
13
|
+
const FilterSelects = ({ selects, filters, handleChange }) => {
|
|
14
|
+
if (!selects.length)
|
|
15
|
+
return null;
|
|
16
|
+
return (react_1.default.createElement("div", { className: b() }, selects.map(({ name, options }) => (react_1.default.createElement("div", { className: b('select'), key: name },
|
|
17
|
+
react_1.default.createElement(SelectItem, { name: name, items: options, value: filters[name], handleChange: handleChange }))))));
|
|
18
|
+
};
|
|
19
|
+
exports.FilterSelects = FilterSelects;
|
|
20
|
+
exports.default = exports.FilterSelects;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* use this for style redefinitions to awoid problems with
|
|
2
2
|
unpredictable css rules order in build */
|
|
3
|
-
.pc-
|
|
3
|
+
.pc-filter-search {
|
|
4
4
|
position: relative;
|
|
5
5
|
display: flex;
|
|
6
6
|
justify-content: flex-end;
|
|
@@ -9,7 +9,7 @@ unpredictable css rules order in build */
|
|
|
9
9
|
line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
|
|
10
10
|
transition: width 0.3s;
|
|
11
11
|
}
|
|
12
|
-
.pc-
|
|
12
|
+
.pc-filter-search__input-icon {
|
|
13
13
|
display: flex;
|
|
14
14
|
padding-right: 7px;
|
|
15
15
|
font: inherit;
|
|
@@ -18,7 +18,7 @@ unpredictable css rules order in build */
|
|
|
18
18
|
border: none;
|
|
19
19
|
background: none;
|
|
20
20
|
}
|
|
21
|
-
.pc-
|
|
21
|
+
.pc-filter-search__suggest {
|
|
22
22
|
display: flex;
|
|
23
23
|
align-items: center;
|
|
24
24
|
height: 44px;
|
|
@@ -26,20 +26,20 @@ unpredictable css rules order in build */
|
|
|
26
26
|
border-radius: var(--bc-text-input-border-radius);
|
|
27
27
|
background-color: var(--g-color-base-background);
|
|
28
28
|
}
|
|
29
|
-
.pc-
|
|
29
|
+
.pc-filter-search__suggest:hover, .pc-filter-search__suggest:focus {
|
|
30
30
|
border: 1px solid var(--g-color-base-generic-hover);
|
|
31
31
|
}
|
|
32
|
-
.pc-
|
|
32
|
+
.pc-filter-search__control.pc-filter-search__control {
|
|
33
33
|
padding-right: 32px;
|
|
34
34
|
padding-left: 12px;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
.pc-
|
|
37
|
+
.pc-filter-search_size_s {
|
|
38
38
|
--bc-text-input-border-radius: var(--g-border-radius-l);
|
|
39
39
|
width: 352px;
|
|
40
40
|
max-width: 100%;
|
|
41
41
|
height: 36px;
|
|
42
42
|
}
|
|
43
|
-
.pc-
|
|
43
|
+
.pc-filter-search_size_m {
|
|
44
44
|
--bc-text-input-border-radius: var(--g-border-radius-xl);
|
|
45
45
|
}
|
|
@@ -6,6 +6,7 @@ type SearchProps = {
|
|
|
6
6
|
debounce?: number;
|
|
7
7
|
placeholder?: string;
|
|
8
8
|
size?: SearchSize;
|
|
9
|
+
clearText?: string;
|
|
9
10
|
};
|
|
10
|
-
export declare const Search: ({ className, initialValue, onSubmit, debounce, placeholder, size, }: SearchProps) => JSX.Element;
|
|
11
|
+
export declare const Search: ({ className, initialValue, onSubmit, debounce, placeholder, size, clearText, }: SearchProps) => JSX.Element;
|
|
11
12
|
export default Search;
|
|
@@ -8,11 +8,10 @@ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
|
|
|
8
8
|
const CloseIcon_1 = require("../../../icons/CloseIcon");
|
|
9
9
|
const SearchIcon_1 = require("../../../icons/SearchIcon");
|
|
10
10
|
const utils_1 = require("../../../utils");
|
|
11
|
-
const
|
|
12
|
-
const b = (0, utils_1.block)('feed-header-search');
|
|
11
|
+
const b = (0, utils_1.block)('filter-search');
|
|
13
12
|
const SEARCH_ICON_SIZE = 16;
|
|
14
13
|
const CLOSE_ICON_SIZE = 12;
|
|
15
|
-
const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder, size = 'm', }) => {
|
|
14
|
+
const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder, size = 'm', clearText, }) => {
|
|
16
15
|
const handleChange = (0, debounce_1.default)(onSubmit, debounce);
|
|
17
16
|
const [isSetInitValue, setIsSetInitValue] = (0, react_1.useState)(false);
|
|
18
17
|
const [value, setValue] = (0, react_1.useState)(initialValue);
|
|
@@ -34,8 +33,8 @@ const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder
|
|
|
34
33
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
35
34
|
}
|
|
36
35
|
}, [value, handleChange, onSubmit]);
|
|
37
|
-
const rightContent = (0, react_1.useMemo)(() => (react_1.default.createElement("button", { className: b('input-icon'), onClick: handleClick, "aria-label":
|
|
38
|
-
react_1.default.createElement(uikit_1.Icon, { data: iconData, size: iconSize }))), [handleClick, value, iconData, iconSize]);
|
|
36
|
+
const rightContent = (0, react_1.useMemo)(() => (react_1.default.createElement("button", { className: b('input-icon'), onClick: handleClick, "aria-label": clearText, disabled: !value },
|
|
37
|
+
react_1.default.createElement(uikit_1.Icon, { data: iconData, size: iconSize }))), [handleClick, value, iconData, iconSize, clearText]);
|
|
39
38
|
const handleUpdate = (0, react_1.useCallback)((query) => {
|
|
40
39
|
setValue(query);
|
|
41
40
|
handleChange(query);
|