@gravity-ui/blog-constructor 6.7.0 → 6.7.2
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/components/FeedHeader/components/Controls/Controls.css +1 -5
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js +23 -21
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.d.ts +1 -0
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.js +2 -2
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +2 -1
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +2 -2
- package/build/esm/components/FeedHeader/components/Controls/Controls.css +1 -5
- package/build/esm/components/FeedHeader/components/Controls/Controls.js +24 -22
- package/build/esm/components/FeedHeader/components/Controls/customRenders.d.ts +1 -0
- package/build/esm/components/FeedHeader/components/Controls/customRenders.js +2 -2
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +2 -1
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +2 -2
- package/package.json +1 -1
@@ -41,10 +41,6 @@ unpredictable css rules order in build */
|
|
41
41
|
border-radius: 8px;
|
42
42
|
}
|
43
43
|
|
44
|
-
.bc-feed-controls__popup_isMobile.bc-feed-controls__popup_isMobile {
|
45
|
-
max-height: inherit;
|
46
|
-
}
|
47
|
-
|
48
44
|
.bc-feed-controls__popup_isMobile .bc-feed-controls__popup-filter {
|
49
45
|
position: relative;
|
50
46
|
border: none;
|
@@ -57,7 +53,7 @@ unpredictable css rules order in build */
|
|
57
53
|
border-bottom: 2px solid var(--g-color-line-generic);
|
58
54
|
border-bottom-right-radius: 0;
|
59
55
|
border-bottom-left-radius: 0;
|
60
|
-
width:
|
56
|
+
width: 100%;
|
61
57
|
height: 2px;
|
62
58
|
transform: translateX(-50%);
|
63
59
|
}
|
@@ -89,26 +89,28 @@ const Controls = ({ handleLoadData, tags = [], services = [], queryParams, }) =>
|
|
89
89
|
};
|
90
90
|
const tagsItems = (0, react_1.useMemo)(() => [{ value: 'empty', content: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags) }, ...tags], [tags]);
|
91
91
|
const servicesItems = (0, react_1.useMemo)(() => (servicesInitial ? [...servicesInitial.split(',')] : []), [servicesInitial]);
|
92
|
-
return (react_1.default.createElement(
|
93
|
-
react_1.default.createElement("
|
94
|
-
|
95
|
-
react_1.default.createElement("div", { className: b('
|
96
|
-
react_1.default.createElement(
|
97
|
-
|
98
|
-
react_1.default.createElement(
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
react_1.default.createElement(
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
(
|
92
|
+
return (react_1.default.createElement(uikit_1.MobileProvider, { mobile: false },
|
93
|
+
react_1.default.createElement("div", { className: b('header') },
|
94
|
+
react_1.default.createElement("h1", { className: b('header-item', { title: true }) }, (0, i18n_1.i18n)(i18n_1.Keyset.Title)),
|
95
|
+
react_1.default.createElement("div", { className: b('header-item', { filters: true }) },
|
96
|
+
react_1.default.createElement("div", { className: b('filter-item') },
|
97
|
+
react_1.default.createElement(Search_1.Search, { className: b('search'), placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.Search), initialValue: search && typeof search === 'string' ? search : '', onSubmit: handleSearch })),
|
98
|
+
react_1.default.createElement("div", { className: b('filter-item') },
|
99
|
+
react_1.default.createElement(uikit_1.Select, { className: b('select'), size: "xl", options: tagsItems, defaultValue: [tagInitial], onUpdate: handleTagSelect, placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags), popupClassName: b('popup', { isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
100
|
+
initial: [tagInitial],
|
101
|
+
list: tagsItems,
|
102
|
+
defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags),
|
103
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption })),
|
104
|
+
services.length > 0 ? (react_1.default.createElement("div", { className: b('filter-item') },
|
105
|
+
react_1.default.createElement(uikit_1.Select, { className: b('select'), size: "xl", multiple: true, filterable: true, hasClear: true, disablePortal: true, options: services, defaultValue: servicesItems, popupClassName: b('popup', { isMobile }), onUpdate: handleServicesSelect, placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.AllServices), renderControl: (0, customRenders_1.renderSwitcher)({
|
106
|
+
initial: servicesItems,
|
107
|
+
list: services,
|
108
|
+
defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllServices),
|
109
|
+
qa: 'service-select',
|
110
|
+
}), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption, renderFilter: customRenders_1.renderFilter }))) : null,
|
111
|
+
hasLikes ? (react_1.default.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
|
112
|
+
react_1.default.createElement(uikit_1.Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
|
113
|
+
react_1.default.createElement(uikit_1.Icon, { data: Save_1.Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
|
114
|
+
(0, i18n_1.i18n)(i18n_1.Keyset.ActionSavedOnly)))) : null))));
|
113
115
|
};
|
114
116
|
exports.Controls = Controls;
|
@@ -5,6 +5,7 @@ type RenderSwitcherType = ({ initial, list, defaultLabel, }: {
|
|
5
5
|
initial: CustomSwitcherProps['initial'];
|
6
6
|
list: CustomSwitcherProps['list'];
|
7
7
|
defaultLabel: string;
|
8
|
+
qa?: string;
|
8
9
|
}) => SelectProps['renderControl'];
|
9
10
|
type RenderFilterType = SelectProps['renderFilter'];
|
10
11
|
export declare const renderSwitcher: RenderSwitcherType;
|
@@ -9,11 +9,11 @@ const cn_1 = require("../../../../utils/cn");
|
|
9
9
|
const CustomSelectOption_1 = require("../CustomSelectOption/CustomSelectOption");
|
10
10
|
const CustomSwitcher_1 = require("../CustomSwitcher/CustomSwitcher");
|
11
11
|
const b = (0, cn_1.block)('feed-controls');
|
12
|
-
const renderSwitcher = ({ initial, list, defaultLabel }) =>
|
12
|
+
const renderSwitcher = ({ initial, list, defaultLabel, qa }) =>
|
13
13
|
// eslint-disable-next-line react/display-name
|
14
14
|
(_a) => {
|
15
15
|
var { ref, renderClear } = _a, _b = _a.triggerProps, { id, disabled, type, onClick, onKeyDown } = _b, a11yProps = tslib_1.__rest(_b, ["id", "disabled", "type", "onClick", "onKeyDown"]);
|
16
|
-
return (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { id: id, disabled: disabled, type: type, initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, renderClear: renderClear, a11yProps: a11yProps }));
|
16
|
+
return (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { id: id, disabled: disabled, type: type, initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, renderClear: renderClear, a11yProps: a11yProps, qa: qa }));
|
17
17
|
};
|
18
18
|
exports.renderSwitcher = renderSwitcher;
|
19
19
|
const renderFilter = (_a) => {
|
@@ -13,6 +13,7 @@ export type CustomSwitcherProps = {
|
|
13
13
|
list: SelectItem[];
|
14
14
|
controlRef: RenderControlParameters['ref'];
|
15
15
|
a11yProps: RenderControlA11yProps;
|
16
|
+
qa?: string;
|
16
17
|
} & Omit<RenderControlParameters, 'ref'> & Pick<TriggerProps, 'id' | 'disabled' | 'type'>;
|
17
|
-
export declare const CustomSwitcher: ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, }: CustomSwitcherProps) => React.JSX.Element;
|
18
|
+
export declare const CustomSwitcher: ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, qa, }: CustomSwitcherProps) => React.JSX.Element;
|
18
19
|
export {};
|
@@ -10,7 +10,7 @@ const cn_1 = require("../../../../utils/cn");
|
|
10
10
|
const b = (0, cn_1.block)('feed-custom-switcher');
|
11
11
|
const ICON_SIZE = 12;
|
12
12
|
const CLEAR_ICON_SIZE = 11;
|
13
|
-
const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, }) => {
|
13
|
+
const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, qa, }) => {
|
14
14
|
const itemsNames = (0, react_1.useMemo)(() => {
|
15
15
|
const items = list
|
16
16
|
.filter((item) => initial.includes(item.value))
|
@@ -20,7 +20,7 @@ const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list, onCli
|
|
20
20
|
const hasCounter = itemsNames.length > 1;
|
21
21
|
const contentElementId = (0, uikit_1.useUniqId)();
|
22
22
|
return (react_1.default.createElement("div", { className: b('custom-switcher'), ref: controlRef },
|
23
|
-
react_1.default.createElement("button", Object.assign({ id: id, disabled: disabled, type: type, onClick: onClick, className: b('custom-switcher-element', { overlay: true }), onKeyDown: onKeyDown }, a11yProps, { "aria-labelledby": contentElementId })),
|
23
|
+
react_1.default.createElement("button", Object.assign({ "data-qa": qa, id: id, disabled: disabled, type: type, onClick: onClick, className: b('custom-switcher-element', { overlay: true }), onKeyDown: onKeyDown }, a11yProps, { "aria-labelledby": contentElementId })),
|
24
24
|
react_1.default.createElement("div", { id: contentElementId, className: b('custom-switcher-element', { content: true }), "aria-hidden": true }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
|
25
25
|
renderClear &&
|
26
26
|
renderClear({
|
@@ -41,10 +41,6 @@ unpredictable css rules order in build */
|
|
41
41
|
border-radius: 8px;
|
42
42
|
}
|
43
43
|
|
44
|
-
.bc-feed-controls__popup_isMobile.bc-feed-controls__popup_isMobile {
|
45
|
-
max-height: inherit;
|
46
|
-
}
|
47
|
-
|
48
44
|
.bc-feed-controls__popup_isMobile .bc-feed-controls__popup-filter {
|
49
45
|
position: relative;
|
50
46
|
border: none;
|
@@ -57,7 +53,7 @@ unpredictable css rules order in build */
|
|
57
53
|
border-bottom: 2px solid var(--g-color-line-generic);
|
58
54
|
border-bottom-right-radius: 0;
|
59
55
|
border-bottom-left-radius: 0;
|
60
|
-
width:
|
56
|
+
width: 100%;
|
61
57
|
height: 2px;
|
62
58
|
transform: translateX(-50%);
|
63
59
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React, { useContext, useMemo, useState } from 'react';
|
2
2
|
import { useAnalytics } from '@gravity-ui/page-constructor';
|
3
|
-
import { Button, Icon, Select } from '@gravity-ui/uikit';
|
3
|
+
import { Button, Icon, MobileProvider, Select } from '@gravity-ui/uikit';
|
4
4
|
import { DefaultGoalIds } from '../../../../constants';
|
5
5
|
import { LikesContext } from '../../../../contexts/LikesContext';
|
6
6
|
import { MobileContext } from '../../../../contexts/MobileContext';
|
@@ -86,25 +86,27 @@ export const Controls = ({ handleLoadData, tags = [], services = [], queryParams
|
|
86
86
|
};
|
87
87
|
const tagsItems = useMemo(() => [{ value: 'empty', content: i18n(Keyset.AllTags) }, ...tags], [tags]);
|
88
88
|
const servicesItems = useMemo(() => (servicesInitial ? [...servicesInitial.split(',')] : []), [servicesInitial]);
|
89
|
-
return (React.createElement(
|
90
|
-
React.createElement("
|
91
|
-
|
92
|
-
React.createElement("div", { className: b('
|
93
|
-
React.createElement(
|
94
|
-
|
95
|
-
React.createElement(
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
React.createElement(
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
89
|
+
return (React.createElement(MobileProvider, { mobile: false },
|
90
|
+
React.createElement("div", { className: b('header') },
|
91
|
+
React.createElement("h1", { className: b('header-item', { title: true }) }, i18n(Keyset.Title)),
|
92
|
+
React.createElement("div", { className: b('header-item', { filters: true }) },
|
93
|
+
React.createElement("div", { className: b('filter-item') },
|
94
|
+
React.createElement(Search, { className: b('search'), placeholder: i18n(Keyset.Search), initialValue: search && typeof search === 'string' ? search : '', onSubmit: handleSearch })),
|
95
|
+
React.createElement("div", { className: b('filter-item') },
|
96
|
+
React.createElement(Select, { className: b('select'), size: "xl", options: tagsItems, defaultValue: [tagInitial], onUpdate: handleTagSelect, placeholder: i18n(Keyset.AllTags), popupClassName: b('popup', { isMobile }), renderControl: renderSwitcher({
|
97
|
+
initial: [tagInitial],
|
98
|
+
list: tagsItems,
|
99
|
+
defaultLabel: i18n(Keyset.AllTags),
|
100
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption })),
|
101
|
+
services.length > 0 ? (React.createElement("div", { className: b('filter-item') },
|
102
|
+
React.createElement(Select, { className: b('select'), size: "xl", multiple: true, filterable: true, hasClear: true, disablePortal: true, options: services, defaultValue: servicesItems, popupClassName: b('popup', { isMobile }), onUpdate: handleServicesSelect, placeholder: i18n(Keyset.AllServices), renderControl: renderSwitcher({
|
103
|
+
initial: servicesItems,
|
104
|
+
list: services,
|
105
|
+
defaultLabel: i18n(Keyset.AllServices),
|
106
|
+
qa: 'service-select',
|
107
|
+
}), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption, renderFilter: renderFilter }))) : null,
|
108
|
+
hasLikes ? (React.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
|
109
|
+
React.createElement(Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
|
110
|
+
React.createElement(Icon, { data: Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
|
111
|
+
i18n(Keyset.ActionSavedOnly)))) : null))));
|
110
112
|
};
|
@@ -6,6 +6,7 @@ type RenderSwitcherType = ({ initial, list, defaultLabel, }: {
|
|
6
6
|
initial: CustomSwitcherProps['initial'];
|
7
7
|
list: CustomSwitcherProps['list'];
|
8
8
|
defaultLabel: string;
|
9
|
+
qa?: string;
|
9
10
|
}) => SelectProps['renderControl'];
|
10
11
|
type RenderFilterType = SelectProps['renderFilter'];
|
11
12
|
export declare const renderSwitcher: RenderSwitcherType;
|
@@ -7,11 +7,11 @@ import { CustomSelectOption, } from '../CustomSelectOption/CustomSelectOption';
|
|
7
7
|
import { CustomSwitcher } from '../CustomSwitcher/CustomSwitcher';
|
8
8
|
import './Controls.css';
|
9
9
|
const b = block('feed-controls');
|
10
|
-
export const renderSwitcher = ({ initial, list, defaultLabel }) =>
|
10
|
+
export const renderSwitcher = ({ initial, list, defaultLabel, qa }) =>
|
11
11
|
// eslint-disable-next-line react/display-name
|
12
12
|
(_a) => {
|
13
13
|
var { ref, renderClear } = _a, _b = _a.triggerProps, { id, disabled, type, onClick, onKeyDown } = _b, a11yProps = __rest(_b, ["id", "disabled", "type", "onClick", "onKeyDown"]);
|
14
|
-
return (React.createElement(CustomSwitcher, { id: id, disabled: disabled, type: type, initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, renderClear: renderClear, a11yProps: a11yProps }));
|
14
|
+
return (React.createElement(CustomSwitcher, { id: id, disabled: disabled, type: type, initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, renderClear: renderClear, a11yProps: a11yProps, qa: qa }));
|
15
15
|
};
|
16
16
|
export const renderFilter = (_a) => {
|
17
17
|
var { ref, onChange } = _a, _b = _a.inputProps, { value, onKeyDown, onChange: _, size: __, placeholder: ___ } = _b, a11yProps = __rest(_b, ["value", "onKeyDown", "onChange", "size", "placeholder"]);
|
@@ -14,6 +14,7 @@ export type CustomSwitcherProps = {
|
|
14
14
|
list: SelectItem[];
|
15
15
|
controlRef: RenderControlParameters['ref'];
|
16
16
|
a11yProps: RenderControlA11yProps;
|
17
|
+
qa?: string;
|
17
18
|
} & Omit<RenderControlParameters, 'ref'> & Pick<TriggerProps, 'id' | 'disabled' | 'type'>;
|
18
|
-
export declare const CustomSwitcher: ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, }: CustomSwitcherProps) => React.JSX.Element;
|
19
|
+
export declare const CustomSwitcher: ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, qa, }: CustomSwitcherProps) => React.JSX.Element;
|
19
20
|
export {};
|
@@ -7,7 +7,7 @@ import './CustomSwitcher.css';
|
|
7
7
|
const b = block('feed-custom-switcher');
|
8
8
|
const ICON_SIZE = 12;
|
9
9
|
const CLEAR_ICON_SIZE = 11;
|
10
|
-
export const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, }) => {
|
10
|
+
export const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list, onClick, controlRef, onKeyDown, renderClear, a11yProps, qa, }) => {
|
11
11
|
const itemsNames = useMemo(() => {
|
12
12
|
const items = list
|
13
13
|
.filter((item) => initial.includes(item.value))
|
@@ -17,7 +17,7 @@ export const CustomSwitcher = ({ id, disabled, type, initial, defaultLabel, list
|
|
17
17
|
const hasCounter = itemsNames.length > 1;
|
18
18
|
const contentElementId = useUniqId();
|
19
19
|
return (React.createElement("div", { className: b('custom-switcher'), ref: controlRef },
|
20
|
-
React.createElement("button", Object.assign({ id: id, disabled: disabled, type: type, onClick: onClick, className: b('custom-switcher-element', { overlay: true }), onKeyDown: onKeyDown }, a11yProps, { "aria-labelledby": contentElementId })),
|
20
|
+
React.createElement("button", Object.assign({ "data-qa": qa, id: id, disabled: disabled, type: type, onClick: onClick, className: b('custom-switcher-element', { overlay: true }), onKeyDown: onKeyDown }, a11yProps, { "aria-labelledby": contentElementId })),
|
21
21
|
React.createElement("div", { id: contentElementId, className: b('custom-switcher-element', { content: true }), "aria-hidden": true }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
|
22
22
|
renderClear &&
|
23
23
|
renderClear({
|