@gravity-ui/blog-constructor 5.4.1 → 5.5.0-alpha.0

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.
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { CTAProps } from '../../models/blocks';
3
- export declare const CTA: ({ items, paddingTop, paddingBottom }: CTAProps) => React.JSX.Element;
3
+ export declare const CTA: ({ items, paddingTop, paddingBottom, qa }: CTAProps) => React.JSX.Element;
@@ -10,7 +10,7 @@ const paddings_1 = require("../../models/paddings");
10
10
  const cn_1 = require("../../utils/cn");
11
11
  const common_1 = require("../../utils/common");
12
12
  const b = (0, cn_1.block)('cta');
13
- const CTA = ({ items, paddingTop, paddingBottom }) => {
13
+ const CTA = ({ items, paddingTop, paddingBottom, qa }) => {
14
14
  /**
15
15
  * @deprecated Metrika will be deleted after launch of analyticsEvents
16
16
  */
@@ -18,18 +18,19 @@ const CTA = ({ items, paddingTop, paddingBottom }) => {
18
18
  name: constants_1.BlogMetrikaGoalIds.cta,
19
19
  isCrossSite: true,
20
20
  };
21
+ const qaAttributes = (0, common_1.getQaAttributes)(qa, 'card');
21
22
  return (react_1.default.createElement(Wrapper_1.Wrapper, { paddings: {
22
23
  [paddings_1.PaddingsDirections.top]: paddingTop,
23
24
  [paddings_1.PaddingsDirections.bottom]: paddingBottom,
24
- }, className: b('content'), qa: "blog-cta-content" }, items.map((content, index) => {
25
+ }, className: b('content'), qa: qaAttributes.wrapper }, items.map((content, index) => {
25
26
  var _a;
26
27
  const contentData = (0, common_1.updateContentSizes)(content);
27
28
  (_a = contentData.links) === null || _a === void 0 ? void 0 : _a.forEach((link) => {
28
29
  // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign
29
30
  link.metrikaGoals = (0, common_1.getBlogElementMetrika)(metrikaGoal, link.metrikaGoals);
30
31
  });
31
- return (react_1.default.createElement("div", { key: index, className: b('card'), "data-qa": "blog-cta-card" },
32
- react_1.default.createElement(page_constructor_1.Content, Object.assign({}, contentData))));
32
+ return (react_1.default.createElement("div", { key: index, className: b('card'), "data-qa": qaAttributes.card },
33
+ react_1.default.createElement(page_constructor_1.Content, Object.assign({}, contentData, { qa: qaAttributes.content }))));
33
34
  })));
34
35
  };
35
36
  exports.CTA = CTA;
@@ -11,7 +11,7 @@ const CustomSwitcher_1 = require("../CustomSwitcher/CustomSwitcher");
11
11
  const b = (0, cn_1.block)('feed-controls');
12
12
  const renderSwitcher = ({ initial, list, defaultLabel }) =>
13
13
  // eslint-disable-next-line react/display-name
14
- ({ onClick, ref }) => (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick }));
14
+ ({ onClick, ref, onKeyDown, open }) => (react_1.default.createElement(CustomSwitcher_1.CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, open: open }));
15
15
  exports.renderSwitcher = renderSwitcher;
16
16
  const renderFilter = ({ value, ref, onChange, onKeyDown }) => (react_1.default.createElement(uikit_1.TextInput, { controlRef: ref, controlProps: { size: 1 }, value: value, view: "clear", placeholder: (0, i18n_1.i18)(i18n_1.Keyset.Search), onUpdate: onChange, onKeyDown: onKeyDown, className: b('popup-filter') }));
17
17
  exports.renderFilter = renderFilter;
@@ -12,6 +12,14 @@ unpredictable css rules order in build */
12
12
  border-radius: var(--g-border-radius-xl);
13
13
  width: 100%;
14
14
  line-height: 42px;
15
+ text-align: initial;
16
+ }
17
+ .bc-feed-custom-switcher__custom-switcher:focus {
18
+ outline: 2px solid var(--g-color-line-focus);
19
+ outline-offset: 0;
20
+ }
21
+ .bc-feed-custom-switcher__custom-switcher:focus:not(:focus-visible) {
22
+ outline: 0;
15
23
  }
16
24
  .bc-feed-custom-switcher__custom-switcher + .yc-popup.yc-popup_open {
17
25
  position: absolute !important;
@@ -8,5 +8,5 @@ export type CustomSwitcherProps = {
8
8
  list: SelectItem[];
9
9
  controlRef: RenderControlParameters['ref'];
10
10
  } & Omit<RenderControlParameters, 'ref'>;
11
- export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, }: CustomSwitcherProps) => React.JSX.Element;
11
+ export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }: CustomSwitcherProps) => React.JSX.Element;
12
12
  export {};
@@ -8,7 +8,7 @@ const DropdownArrow_1 = require("../../../../icons/DropdownArrow");
8
8
  const cn_1 = require("../../../../utils/cn");
9
9
  const b = (0, cn_1.block)('feed-custom-switcher');
10
10
  const ICON_SIZE = 12;
11
- const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) => {
11
+ const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }) => {
12
12
  const itemsNames = (0, react_1.useMemo)(() => {
13
13
  const items = list
14
14
  .filter((item) => initial.includes(item.value))
@@ -16,7 +16,7 @@ const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) =
16
16
  return items.length ? items : [defaultLabel];
17
17
  }, [defaultLabel, initial, list]);
18
18
  const hasCounter = itemsNames.length > 1;
19
- return (react_1.default.createElement("div", { className: b('custom-switcher'), onClick: onClick, ref: controlRef },
19
+ return (react_1.default.createElement("button", { className: b('custom-switcher'), onClick: onClick, ref: controlRef, onKeyDown: onKeyDown, "aria-expanded": open },
20
20
  react_1.default.createElement("div", { className: b('custom-switcher-element', { content: true }) }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
21
21
  hasCounter && (react_1.default.createElement("div", { className: b('custom-switcher-element', { counter: true }) }, itemsNames.length)),
22
22
  react_1.default.createElement("div", { className: b('custom-switcher-element', { arrow: true }) },
@@ -4,7 +4,7 @@ exports.Search = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const uikit_1 = require("@gravity-ui/uikit");
7
- const lodash_1 = require("lodash");
7
+ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
8
8
  const useIsIPhone_1 = require("../../hooks/useIsIPhone");
9
9
  const i18n_1 = require("../../i18n");
10
10
  const Close_1 = require("../../icons/Close");
@@ -21,7 +21,7 @@ const AUTOFOCUS_TIMEOUT = 0;
21
21
  * @returns {JSX|null}
22
22
  */
23
23
  const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder = (0, i18n_1.i18)(i18n_1.Keyset.Search), size = 'm', autoFocus = false, value: externalValue, }) => {
24
- const handleChange = (0, lodash_1.debounce)(onSubmit, debounce);
24
+ const handleChange = (0, debounce_1.default)(onSubmit, debounce);
25
25
  const [value, setValue] = (0, react_1.useState)(initialValue);
26
26
  const inputRef = (0, react_1.useRef)(null);
27
27
  const isIPhone = (0, useIsIPhone_1.useIsIPhone)();
@@ -4,7 +4,7 @@ declare const _default: {
4
4
  "blog-layout-block": ({ fullWidth, mobileOrder, children, paddingTop, paddingBottom, }: import("react").PropsWithChildren<import("../models/blocks").LayoutProps>) => import("react").JSX.Element;
5
5
  "blog-media-block": ({ text, paddingTop, paddingBottom, ...mediaProps }: import("../models/blocks").MediaProps) => import("react").JSX.Element;
6
6
  "blog-banner-block": ({ color, imageSize, image, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").BannerProps) => import("react").JSX.Element;
7
- "blog-cta-block": ({ items, paddingTop, paddingBottom }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
7
+ "blog-cta-block": ({ items, paddingTop, paddingBottom, qa }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
8
8
  "blog-colored-text-block": ({ background, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").ColoredTextProps) => import("react").JSX.Element;
9
9
  "blog-author-block": (props: import("../models/blocks").AuthorProps) => import("react").JSX.Element | null;
10
10
  "blog-suggest-block": ({ paddingTop, paddingBottom }: import("../models/blocks").SuggestProps) => import("react").JSX.Element | null;
@@ -194,6 +194,7 @@ unpredictable css rules order in build */
194
194
  color: var(--g-color-text-link);
195
195
  text-decoration: none;
196
196
  cursor: pointer;
197
+ border-radius: var(--g-focus-border-radius);
197
198
  }
198
199
  .utilityfocus .yfm_constructor a:focus {
199
200
  outline: 2px solid #ffdb4d;
@@ -202,6 +203,12 @@ unpredictable css rules order in build */
202
203
  --pc-text-header-color: var(--g-color-text-link-hover);
203
204
  color: var(--g-color-text-link-hover);
204
205
  }
206
+ .yfm_constructor a:focus {
207
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
208
+ }
209
+ .yfm_constructor a:focus:not(:focus-visible) {
210
+ box-shadow: none;
211
+ }
205
212
  .yfm_constructor table {
206
213
  color: var(--g-color-text-primary);
207
214
  border: 1px solid var(--g-color-line-generic);
@@ -18,9 +18,8 @@ export type ColoredTextProps = ContentBlockProps & QAProps & {
18
18
  altText?: string;
19
19
  };
20
20
  } & PaddingsYFMProps;
21
- export type CTAProps = {
21
+ export type CTAProps = QAProps & {
22
22
  items: Array<ContentBlockProps>;
23
- columnCount?: number;
24
23
  } & PaddingsYFMProps;
25
24
  export type HeaderProps = HeaderBlockProps & PaddingsYFMProps;
26
25
  export type LayoutProps = {
@@ -4,7 +4,10 @@ exports.getQaAttributes = exports.scrollOnPageChange = exports.getFeedQueryParam
4
4
  const tslib_1 = require("tslib");
5
5
  const url_1 = require("url");
6
6
  const page_constructor_1 = require("@gravity-ui/page-constructor");
7
- const lodash_1 = require("lodash");
7
+ const camelCase_1 = tslib_1.__importDefault(require("lodash/camelCase"));
8
+ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
9
+ const flatten_1 = tslib_1.__importDefault(require("lodash/flatten"));
10
+ const memoize_1 = tslib_1.__importDefault(require("lodash/memoize"));
8
11
  const constants_1 = require("../blocks/constants");
9
12
  const i18n_1 = require("../i18n");
10
13
  const QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];
@@ -35,7 +38,7 @@ const scrollToHash = (hash, browser) => {
35
38
  setTimeout(() => element.scrollIntoView({ behavior: browser === 'Yandex' ? 'auto' : 'smooth' }), 0);
36
39
  };
37
40
  exports.scrollToHash = scrollToHash;
38
- exports.getTags = (0, lodash_1.memoize)((tags, prefix) => {
41
+ exports.getTags = (0, memoize_1.default)((tags, prefix) => {
39
42
  return tags.map((_a) => {
40
43
  var { slug } = _a, tag = tslib_1.__rest(_a, ["slug"]);
41
44
  const queryParams = new URLSearchParams();
@@ -44,7 +47,7 @@ exports.getTags = (0, lodash_1.memoize)((tags, prefix) => {
44
47
  });
45
48
  });
46
49
  const stub = (postId) => postId;
47
- exports.postLikeStatus = (0, lodash_1.debounce)((postId, hasUserLike) => {
50
+ exports.postLikeStatus = (0, debounce_1.default)((postId, hasUserLike) => {
48
51
  (hasUserLike ? stub : stub)(postId);
49
52
  }, 300);
50
53
  const getTagFilterUrl = (tagId, prefix) => {
@@ -117,9 +120,9 @@ exports.scrollOnPageChange = scrollOnPageChange;
117
120
  const getQaAttributes = (qa, ...customKeys) => {
118
121
  const attributes = {};
119
122
  if (qa) {
120
- const keys = QA_ATTRIBUTES_KEYS.concat((0, lodash_1.flatten)(customKeys));
123
+ const keys = QA_ATTRIBUTES_KEYS.concat((0, flatten_1.default)(customKeys));
121
124
  keys.forEach((key) => {
122
- attributes[(0, lodash_1.camelCase)(key)] = `${qa}-${key}`;
125
+ attributes[(0, camelCase_1.default)(key)] = `${qa}-${key}`;
123
126
  });
124
127
  attributes.default = qa;
125
128
  }
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { CTAProps } from '../../models/blocks';
3
3
  import './CTA.css';
4
- export declare const CTA: ({ items, paddingTop, paddingBottom }: CTAProps) => React.JSX.Element;
4
+ export declare const CTA: ({ items, paddingTop, paddingBottom, qa }: CTAProps) => React.JSX.Element;
@@ -4,10 +4,10 @@ import { Wrapper } from '../../components/Wrapper/Wrapper';
4
4
  import { BlogMetrikaGoalIds } from '../../constants';
5
5
  import { PaddingsDirections } from '../../models/paddings';
6
6
  import { block } from '../../utils/cn';
7
- import { getBlogElementMetrika, updateContentSizes } from '../../utils/common';
7
+ import { getBlogElementMetrika, getQaAttributes, updateContentSizes } from '../../utils/common';
8
8
  import './CTA.css';
9
9
  const b = block('cta');
10
- export const CTA = ({ items, paddingTop, paddingBottom }) => {
10
+ export const CTA = ({ items, paddingTop, paddingBottom, qa }) => {
11
11
  /**
12
12
  * @deprecated Metrika will be deleted after launch of analyticsEvents
13
13
  */
@@ -15,17 +15,18 @@ export const CTA = ({ items, paddingTop, paddingBottom }) => {
15
15
  name: BlogMetrikaGoalIds.cta,
16
16
  isCrossSite: true,
17
17
  };
18
+ const qaAttributes = getQaAttributes(qa, 'card');
18
19
  return (React.createElement(Wrapper, { paddings: {
19
20
  [PaddingsDirections.top]: paddingTop,
20
21
  [PaddingsDirections.bottom]: paddingBottom,
21
- }, className: b('content'), qa: "blog-cta-content" }, items.map((content, index) => {
22
+ }, className: b('content'), qa: qaAttributes.wrapper }, items.map((content, index) => {
22
23
  var _a;
23
24
  const contentData = updateContentSizes(content);
24
25
  (_a = contentData.links) === null || _a === void 0 ? void 0 : _a.forEach((link) => {
25
26
  // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign
26
27
  link.metrikaGoals = getBlogElementMetrika(metrikaGoal, link.metrikaGoals);
27
28
  });
28
- return (React.createElement("div", { key: index, className: b('card'), "data-qa": "blog-cta-card" },
29
- React.createElement(Content, Object.assign({}, contentData))));
29
+ return (React.createElement("div", { key: index, className: b('card'), "data-qa": qaAttributes.card },
30
+ React.createElement(Content, Object.assign({}, contentData, { qa: qaAttributes.content }))));
30
31
  })));
31
32
  };
@@ -8,6 +8,6 @@ import './Controls.css';
8
8
  const b = block('feed-controls');
9
9
  export const renderSwitcher = ({ initial, list, defaultLabel }) =>
10
10
  // eslint-disable-next-line react/display-name
11
- ({ onClick, ref }) => (React.createElement(CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick }));
11
+ ({ onClick, ref, onKeyDown, open }) => (React.createElement(CustomSwitcher, { initial: initial, defaultLabel: defaultLabel, list: list, controlRef: ref, onClick: onClick, onKeyDown: onKeyDown, open: open }));
12
12
  export const renderFilter = ({ value, ref, onChange, onKeyDown }) => (React.createElement(TextInput, { controlRef: ref, controlProps: { size: 1 }, value: value, view: "clear", placeholder: i18(Keyset.Search), onUpdate: onChange, onKeyDown: onKeyDown, className: b('popup-filter') }));
13
13
  export const renderOption = (option) => (React.createElement(CustomSelectOption, { data: option }));
@@ -12,6 +12,14 @@ unpredictable css rules order in build */
12
12
  border-radius: var(--g-border-radius-xl);
13
13
  width: 100%;
14
14
  line-height: 42px;
15
+ text-align: initial;
16
+ }
17
+ .bc-feed-custom-switcher__custom-switcher:focus {
18
+ outline: 2px solid var(--g-color-line-focus);
19
+ outline-offset: 0;
20
+ }
21
+ .bc-feed-custom-switcher__custom-switcher:focus:not(:focus-visible) {
22
+ outline: 0;
15
23
  }
16
24
  .bc-feed-custom-switcher__custom-switcher + .yc-popup.yc-popup_open {
17
25
  position: absolute !important;
@@ -9,5 +9,5 @@ export type CustomSwitcherProps = {
9
9
  list: SelectItem[];
10
10
  controlRef: RenderControlParameters['ref'];
11
11
  } & Omit<RenderControlParameters, 'ref'>;
12
- export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, }: CustomSwitcherProps) => React.JSX.Element;
12
+ export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }: CustomSwitcherProps) => React.JSX.Element;
13
13
  export {};
@@ -5,7 +5,7 @@ import { block } from '../../../../utils/cn';
5
5
  import './CustomSwitcher.css';
6
6
  const b = block('feed-custom-switcher');
7
7
  const ICON_SIZE = 12;
8
- export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) => {
8
+ export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, onKeyDown, open, }) => {
9
9
  const itemsNames = useMemo(() => {
10
10
  const items = list
11
11
  .filter((item) => initial.includes(item.value))
@@ -13,7 +13,7 @@ export const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRe
13
13
  return items.length ? items : [defaultLabel];
14
14
  }, [defaultLabel, initial, list]);
15
15
  const hasCounter = itemsNames.length > 1;
16
- return (React.createElement("div", { className: b('custom-switcher'), onClick: onClick, ref: controlRef },
16
+ return (React.createElement("button", { className: b('custom-switcher'), onClick: onClick, ref: controlRef, onKeyDown: onKeyDown, "aria-expanded": open },
17
17
  React.createElement("div", { className: b('custom-switcher-element', { content: true }) }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
18
18
  hasCounter && (React.createElement("div", { className: b('custom-switcher-element', { counter: true }) }, itemsNames.length)),
19
19
  React.createElement("div", { className: b('custom-switcher-element', { arrow: true }) },
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { Icon, TextInput } from '@gravity-ui/uikit';
3
- import { debounce as lodashDebounce } from 'lodash';
3
+ import lodashDebounce from 'lodash/debounce';
4
4
  import { useIsIPhone } from '../../hooks/useIsIPhone';
5
5
  import { Keyset, i18 } from '../../i18n';
6
6
  import { Close } from '../../icons/Close';
@@ -4,7 +4,7 @@ declare const _default: {
4
4
  "blog-layout-block": ({ fullWidth, mobileOrder, children, paddingTop, paddingBottom, }: import("react").PropsWithChildren<import("../models/blocks").LayoutProps>) => import("react").JSX.Element;
5
5
  "blog-media-block": ({ text, paddingTop, paddingBottom, ...mediaProps }: import("../models/blocks").MediaProps) => import("react").JSX.Element;
6
6
  "blog-banner-block": ({ color, imageSize, image, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").BannerProps) => import("react").JSX.Element;
7
- "blog-cta-block": ({ items, paddingTop, paddingBottom }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
7
+ "blog-cta-block": ({ items, paddingTop, paddingBottom, qa }: import("../models/blocks").CTAProps) => import("react").JSX.Element;
8
8
  "blog-colored-text-block": ({ background, paddingTop, paddingBottom, qa, ...content }: import("../models/blocks").ColoredTextProps) => import("react").JSX.Element;
9
9
  "blog-author-block": (props: import("../models/blocks").AuthorProps) => import("react").JSX.Element | null;
10
10
  "blog-suggest-block": ({ paddingTop, paddingBottom }: import("../models/blocks").SuggestProps) => import("react").JSX.Element | null;
@@ -194,6 +194,7 @@ unpredictable css rules order in build */
194
194
  color: var(--g-color-text-link);
195
195
  text-decoration: none;
196
196
  cursor: pointer;
197
+ border-radius: var(--g-focus-border-radius);
197
198
  }
198
199
  .utilityfocus .yfm_constructor a:focus {
199
200
  outline: 2px solid #ffdb4d;
@@ -202,6 +203,12 @@ unpredictable css rules order in build */
202
203
  --pc-text-header-color: var(--g-color-text-link-hover);
203
204
  color: var(--g-color-text-link-hover);
204
205
  }
206
+ .yfm_constructor a:focus {
207
+ box-shadow: 0 0 0 2px var(--g-color-line-focus);
208
+ }
209
+ .yfm_constructor a:focus:not(:focus-visible) {
210
+ box-shadow: none;
211
+ }
205
212
  .yfm_constructor table {
206
213
  color: var(--g-color-text-primary);
207
214
  border: 1px solid var(--g-color-line-generic);
@@ -18,9 +18,8 @@ export type ColoredTextProps = ContentBlockProps & QAProps & {
18
18
  altText?: string;
19
19
  };
20
20
  } & PaddingsYFMProps;
21
- export type CTAProps = {
21
+ export type CTAProps = QAProps & {
22
22
  items: Array<ContentBlockProps>;
23
- columnCount?: number;
24
23
  } & PaddingsYFMProps;
25
24
  export type HeaderProps = HeaderBlockProps & PaddingsYFMProps;
26
25
  export type LayoutProps = {
@@ -1,7 +1,10 @@
1
1
  import { __rest } from "tslib";
2
2
  import { format, parse } from 'url';
3
3
  import { isNewMetrikaFormat, } from '@gravity-ui/page-constructor';
4
- import { camelCase, debounce, flatten, memoize } from 'lodash';
4
+ import camelCase from 'lodash/camelCase';
5
+ import debounce from 'lodash/debounce';
6
+ import flatten from 'lodash/flatten';
7
+ import memoize from 'lodash/memoize';
5
8
  import { CONTENT_DEFAULT_COL_SIZES, CONTENT_DEFAULT_SIZE, CONTENT_DEFAULT_THEME, DEFAULT_PAGE, DEFAULT_ROWS_PER_PAGE, } from '../blocks/constants';
6
9
  import { Keyset, i18 } from '../i18n';
7
10
  const QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "5.4.1",
3
+ "version": "5.5.0-alpha.0",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -78,7 +78,7 @@
78
78
  },
79
79
  "peerDependencies": {
80
80
  "@doc-tools/transform": "^3.3.2",
81
- "@gravity-ui/page-constructor": "^4.0.0",
81
+ "@gravity-ui/page-constructor": "^4.23.0-alpha.0",
82
82
  "@gravity-ui/uikit": "^5.1.0",
83
83
  "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
84
84
  },
@@ -89,7 +89,7 @@
89
89
  "@commitlint/config-conventional": "^17.4.3",
90
90
  "@doc-tools/transform": "^3.3.2",
91
91
  "@gravity-ui/eslint-config": "^2.0.0",
92
- "@gravity-ui/page-constructor": "^4.20.2",
92
+ "@gravity-ui/page-constructor": "^4.23.0-alpha.0",
93
93
  "@gravity-ui/prettier-config": "^1.0.1",
94
94
  "@gravity-ui/stylelint-config": "^1.0.0",
95
95
  "@gravity-ui/tsconfig": "^1.0.0",
@@ -18,9 +18,8 @@ export type ColoredTextProps = ContentBlockProps & QAProps & {
18
18
  altText?: string;
19
19
  };
20
20
  } & PaddingsYFMProps;
21
- export type CTAProps = {
21
+ export type CTAProps = QAProps & {
22
22
  items: Array<ContentBlockProps>;
23
- columnCount?: number;
24
23
  } & PaddingsYFMProps;
25
24
  export type HeaderProps = HeaderBlockProps & PaddingsYFMProps;
26
25
  export type LayoutProps = {