@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.
@@ -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: 100vw;
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("div", { className: b('header') },
93
- react_1.default.createElement("h1", { className: b('header-item', { title: true }) }, (0, i18n_1.i18n)(i18n_1.Keyset.Title)),
94
- react_1.default.createElement("div", { className: b('header-item', { filters: true }) },
95
- react_1.default.createElement("div", { className: b('filter-item') },
96
- 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 })),
97
- react_1.default.createElement("div", { className: b('filter-item') },
98
- 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)({
99
- initial: [tagInitial],
100
- list: tagsItems,
101
- defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags),
102
- }), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption })),
103
- services.length > 0 ? (react_1.default.createElement("div", { className: b('filter-item') },
104
- 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)({
105
- initial: servicesItems,
106
- list: services,
107
- defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllServices),
108
- }), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption, renderFilter: customRenders_1.renderFilter }))) : null,
109
- hasLikes ? (react_1.default.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
110
- react_1.default.createElement(uikit_1.Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
111
- react_1.default.createElement(uikit_1.Icon, { data: Save_1.Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
112
- (0, i18n_1.i18n)(i18n_1.Keyset.ActionSavedOnly)))) : null)));
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: 100vw;
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("div", { className: b('header') },
90
- React.createElement("h1", { className: b('header-item', { title: true }) }, i18n(Keyset.Title)),
91
- React.createElement("div", { className: b('header-item', { filters: true }) },
92
- React.createElement("div", { className: b('filter-item') },
93
- React.createElement(Search, { className: b('search'), placeholder: i18n(Keyset.Search), initialValue: search && typeof search === 'string' ? search : '', onSubmit: handleSearch })),
94
- React.createElement("div", { className: b('filter-item') },
95
- React.createElement(Select, { className: b('select'), size: "xl", options: tagsItems, defaultValue: [tagInitial], onUpdate: handleTagSelect, placeholder: i18n(Keyset.AllTags), popupClassName: b('popup', { isMobile }), renderControl: renderSwitcher({
96
- initial: [tagInitial],
97
- list: tagsItems,
98
- defaultLabel: i18n(Keyset.AllTags),
99
- }), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption })),
100
- services.length > 0 ? (React.createElement("div", { className: b('filter-item') },
101
- 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({
102
- initial: servicesItems,
103
- list: services,
104
- defaultLabel: i18n(Keyset.AllServices),
105
- }), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption, renderFilter: renderFilter }))) : null,
106
- hasLikes ? (React.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
107
- React.createElement(Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
108
- React.createElement(Icon, { data: Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
109
- i18n(Keyset.ActionSavedOnly)))) : null)));
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({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "6.7.0",
3
+ "version": "6.7.2",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {