@gravity-ui/page-constructor 4.39.0 → 4.40.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.
@@ -20,6 +20,10 @@ unpredictable css rules order in build */
20
20
  width: 100%;
21
21
  padding-bottom: 24px;
22
22
  text-align: center;
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ height: max-content;
23
27
  }
24
28
  .pc-icons-block__text {
25
29
  margin: 8px 0 0;
@@ -1,3 +1,3 @@
1
1
  import { IconsBlockProps } from '../../models';
2
- declare const Icons: ({ title, description, size, items }: IconsBlockProps) => JSX.Element;
2
+ declare const Icons: ({ title, description, size, colSizes, items }: IconsBlockProps) => JSX.Element;
3
3
  export default Icons;
@@ -10,14 +10,14 @@ const b = (0, utils_1.block)('icons-block');
10
10
  const getItemContent = (item) => (react_1.default.createElement(react_1.Fragment, null,
11
11
  react_1.default.createElement(components_1.Image, { className: b('image'), src: item.src }),
12
12
  react_1.default.createElement("p", { className: b('text') }, item.text)));
13
- const Icons = ({ title, description, size = 's', items }) => {
13
+ const Icons = ({ title, description, size = 's', colSizes = { all: 12 }, items }) => {
14
14
  const { hostname } = (0, react_1.useContext)(locationContext_1.LocationContext);
15
15
  const handleAnalytics = (0, hooks_1.useAnalytics)();
16
16
  const onClick = (0, react_1.useCallback)(({ analyticsEvents, url }) => {
17
17
  handleAnalytics(analyticsEvents, { url });
18
18
  }, [handleAnalytics]);
19
19
  return (react_1.default.createElement("div", { className: b({ size }) },
20
- (title || description) && (react_1.default.createElement(components_1.Title, { className: b('header'), title: title, subtitle: description, colSizes: { all: 12 } })),
20
+ (title || description) && (react_1.default.createElement(components_1.Title, { className: b('header'), title: title, subtitle: description, colSizes: colSizes })),
21
21
  items.map((item) => {
22
22
  const itemContent = getItemContent(item);
23
23
  const { url, text } = item;
@@ -58,4 +58,8 @@ unpredictable css rules order in build */
58
58
  }
59
59
  .pc-content-list__item {
60
60
  display: flex;
61
+ }
62
+ .pc-content-list .pc-content-list__title .yfm {
63
+ font-size: inherit;
64
+ line-height: inherit;
61
65
  }
@@ -25,7 +25,7 @@ const ContentList = ({ list, size = 'l', qa }) => {
25
25
  react_1.default.createElement(ContentListItemIcon_1.default, { icon: icon, className: b('icon', { without_title: !title }), qa: qaAttributes.image }),
26
26
  react_1.default.createElement("div", null,
27
27
  title &&
28
- react_1.default.createElement(getHeadingLevel(size), { className: b('title'), 'data-qa': qaAttributes.title }, title),
28
+ react_1.default.createElement(getHeadingLevel(size), { className: b('title'), 'data-qa': qaAttributes.title }, react_1.default.createElement(YFMWrapper_1.default, { content: title, modifiers: { constructor: true } })),
29
29
  text && (react_1.default.createElement(YFMWrapper_1.default, { className: b('text'), content: text, modifiers: { constructor: true }, qa: qaAttributes.text })))));
30
30
  })));
31
31
  };
@@ -53,7 +53,7 @@ const Image = (props) => {
53
53
  };
54
54
  const imageSlider = (imageArray) => {
55
55
  const fullscreenItem = fullscreen === undefined || fullscreen;
56
- return (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard }, imageArray.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
56
+ return (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard, animated: parallax }, imageArray.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
57
57
  };
58
58
  if (Array.isArray(image)) {
59
59
  return imageSlider(image);
@@ -10,7 +10,7 @@ export declare const blockMap: {
10
10
  "table-block": (props: import("./models").TableBlockProps) => JSX.Element;
11
11
  "tabs-block": ({ items, title, description, animated, tabsColSizes, centered, direction, contentSize, }: import("./models").TabsBlockProps) => JSX.Element;
12
12
  "header-block": (props: import("./models").WithChildren<import("./models").HeaderBlockProps & import("./models").ClassNameProps>) => JSX.Element;
13
- "icons-block": ({ title, description, size, items }: import("./models").IconsBlockProps) => JSX.Element;
13
+ "icons-block": ({ title, description, size, colSizes, items }: import("./models").IconsBlockProps) => JSX.Element;
14
14
  "header-slider-block": ({ items, arrows, ...props }: import("./models").HeaderSliderBlockProps) => JSX.Element;
15
15
  "card-layout-block": import("react").FC<import("./blocks/CardLayout/CardLayout").CardLayoutBlockProps>;
16
16
  "content-layout-block": (props: import("./models").ContentLayoutBlockProps) => JSX.Element;
@@ -19,7 +19,7 @@ const ConstructorItem_1 = require("./components/ConstructorItem");
19
19
  const ConstructorRow_1 = require("./components/ConstructorRow");
20
20
  const b = (0, utils_1.block)('page-constructor');
21
21
  const Constructor = (props) => {
22
- const { content: { blocks = [], background = {} } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
22
+ const { content: { blocks = [], background } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
23
23
  const { context } = (0, react_1.useMemo)(() => ({
24
24
  context: {
25
25
  blockTypes: [...models_1.BlockTypes, ...(0, utils_1.getCustomTypes)(['blocks', 'headers'], custom)],
@@ -43,7 +43,7 @@ const Constructor = (props) => {
43
43
  const restBlocks = (0, utils_1.getOrderedBlocks)(blocks, context.headerBlockTypes);
44
44
  const themedBackground = (0, utils_1.getThemedValue)(background, theme);
45
45
  return (react_1.default.createElement(innerContext_1.InnerContext.Provider, { value: context },
46
- react_1.default.createElement(RootCn_1.default, null,
46
+ react_1.default.createElement(RootCn_1.default, { className: b() },
47
47
  react_1.default.createElement("div", { className: b('wrapper') },
48
48
  themedBackground && (react_1.default.createElement(BackgroundMedia_1.default, Object.assign({}, themedBackground, { className: b('background') }))),
49
49
  react_1.default.createElement(Layout_1.default, { navigation: navigation },
@@ -258,6 +258,7 @@ export interface IconsBlockProps {
258
258
  description?: string;
259
259
  size?: 's' | 'm' | 'l';
260
260
  items: IconsBlockItemProps[];
261
+ colSizes?: GridColumnSizesType;
261
262
  }
262
263
  interface ContentLayoutBlockParams {
263
264
  size?: ContentSize;
@@ -280,7 +280,7 @@ exports.config = {
280
280
  {
281
281
  fields: ['list'],
282
282
  transformer: common_1.yfmTransformer,
283
- parser: (0, common_1.createItemsParser)(['text']),
283
+ parser: (0, common_1.createItemsParser)(['title', 'text']),
284
284
  },
285
285
  ],
286
286
  [models_1.BlockType.InfoBlock]: [
@@ -20,6 +20,10 @@ unpredictable css rules order in build */
20
20
  width: 100%;
21
21
  padding-bottom: 24px;
22
22
  text-align: center;
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ height: max-content;
23
27
  }
24
28
  .pc-icons-block__text {
25
29
  margin: 8px 0 0;
@@ -1,4 +1,4 @@
1
1
  import { IconsBlockProps } from '../../models';
2
2
  import './Icons.css';
3
- declare const Icons: ({ title, description, size, items }: IconsBlockProps) => JSX.Element;
3
+ declare const Icons: ({ title, description, size, colSizes, items }: IconsBlockProps) => JSX.Element;
4
4
  export default Icons;
@@ -8,14 +8,14 @@ const b = block('icons-block');
8
8
  const getItemContent = (item) => (React.createElement(Fragment, null,
9
9
  React.createElement(Image, { className: b('image'), src: item.src }),
10
10
  React.createElement("p", { className: b('text') }, item.text)));
11
- const Icons = ({ title, description, size = 's', items }) => {
11
+ const Icons = ({ title, description, size = 's', colSizes = { all: 12 }, items }) => {
12
12
  const { hostname } = useContext(LocationContext);
13
13
  const handleAnalytics = useAnalytics();
14
14
  const onClick = useCallback(({ analyticsEvents, url }) => {
15
15
  handleAnalytics(analyticsEvents, { url });
16
16
  }, [handleAnalytics]);
17
17
  return (React.createElement("div", { className: b({ size }) },
18
- (title || description) && (React.createElement(Title, { className: b('header'), title: title, subtitle: description, colSizes: { all: 12 } })),
18
+ (title || description) && (React.createElement(Title, { className: b('header'), title: title, subtitle: description, colSizes: colSizes })),
19
19
  items.map((item) => {
20
20
  const itemContent = getItemContent(item);
21
21
  const { url, text } = item;
@@ -58,4 +58,8 @@ unpredictable css rules order in build */
58
58
  }
59
59
  .pc-content-list__item {
60
60
  display: flex;
61
+ }
62
+ .pc-content-list .pc-content-list__title .yfm {
63
+ font-size: inherit;
64
+ line-height: inherit;
61
65
  }
@@ -23,7 +23,7 @@ const ContentList = ({ list, size = 'l', qa }) => {
23
23
  React.createElement(ItemIcon, { icon: icon, className: b('icon', { without_title: !title }), qa: qaAttributes.image }),
24
24
  React.createElement("div", null,
25
25
  title &&
26
- React.createElement(getHeadingLevel(size), { className: b('title'), 'data-qa': qaAttributes.title }, title),
26
+ React.createElement(getHeadingLevel(size), { className: b('title'), 'data-qa': qaAttributes.title }, React.createElement(YFMWrapper, { content: title, modifiers: { constructor: true } })),
27
27
  text && (React.createElement(YFMWrapper, { className: b('text'), content: text, modifiers: { constructor: true }, qa: qaAttributes.text })))));
28
28
  })));
29
29
  };
@@ -50,7 +50,7 @@ const Image = (props) => {
50
50
  };
51
51
  const imageSlider = (imageArray) => {
52
52
  const fullscreenItem = fullscreen === undefined || fullscreen;
53
- return (React.createElement(SliderBlock, { slidesToShow: 1, type: SliderType.MediaCard }, imageArray.map((item, index) => (React.createElement(Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
53
+ return (React.createElement(SliderBlock, { slidesToShow: 1, type: SliderType.MediaCard, animated: parallax }, imageArray.map((item, index) => (React.createElement(Fragment, { key: index }, fullscreenItem ? renderFullscreenImage(item) : imageOnly(item))))));
54
54
  };
55
55
  if (Array.isArray(image)) {
56
56
  return imageSlider(image);
@@ -10,7 +10,7 @@ export declare const blockMap: {
10
10
  "table-block": (props: import("./models").TableBlockProps) => JSX.Element;
11
11
  "tabs-block": ({ items, title, description, animated, tabsColSizes, centered, direction, contentSize, }: import("./models").TabsBlockProps) => JSX.Element;
12
12
  "header-block": (props: import("./models").WithChildren<import("./models").HeaderBlockProps & import("./models").ClassNameProps>) => JSX.Element;
13
- "icons-block": ({ title, description, size, items }: import("./models").IconsBlockProps) => JSX.Element;
13
+ "icons-block": ({ title, description, size, colSizes, items }: import("./models").IconsBlockProps) => JSX.Element;
14
14
  "header-slider-block": ({ items, arrows, ...props }: import("./models").HeaderSliderBlockProps) => JSX.Element;
15
15
  "card-layout-block": import("react").FC<import("./blocks/CardLayout/CardLayout").CardLayoutBlockProps>;
16
16
  "content-layout-block": (props: import("./models").ContentLayoutBlockProps) => JSX.Element;
@@ -17,7 +17,7 @@ import { ConstructorRow } from './components/ConstructorRow';
17
17
  import './PageConstructor.css';
18
18
  const b = cnBlock('page-constructor');
19
19
  export const Constructor = (props) => {
20
- const { content: { blocks = [], background = {} } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
20
+ const { content: { blocks = [], background } = {}, renderMenu, shouldRenderBlock, navigation, custom, } = props;
21
21
  const { context } = useMemo(() => ({
22
22
  context: {
23
23
  blockTypes: [...BlockTypes, ...getCustomTypes(['blocks', 'headers'], custom)],
@@ -41,7 +41,7 @@ export const Constructor = (props) => {
41
41
  const restBlocks = getOrderedBlocks(blocks, context.headerBlockTypes);
42
42
  const themedBackground = getThemedValue(background, theme);
43
43
  return (React.createElement(InnerContext.Provider, { value: context },
44
- React.createElement(RootCn, null,
44
+ React.createElement(RootCn, { className: b() },
45
45
  React.createElement("div", { className: b('wrapper') },
46
46
  themedBackground && (React.createElement(BackgroundMedia, Object.assign({}, themedBackground, { className: b('background') }))),
47
47
  React.createElement(Layout, { navigation: navigation },
@@ -258,6 +258,7 @@ export interface IconsBlockProps {
258
258
  description?: string;
259
259
  size?: 's' | 'm' | 'l';
260
260
  items: IconsBlockItemProps[];
261
+ colSizes?: GridColumnSizesType;
261
262
  }
262
263
  interface ContentLayoutBlockParams {
263
264
  size?: ContentSize;
@@ -277,7 +277,7 @@ export const config = {
277
277
  {
278
278
  fields: ['list'],
279
279
  transformer: yfmTransformer,
280
- parser: createItemsParser(['text']),
280
+ parser: createItemsParser(['title', 'text']),
281
281
  },
282
282
  ],
283
283
  [BlockType.InfoBlock]: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "4.39.0",
3
+ "version": "4.40.0",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -258,6 +258,7 @@ export interface IconsBlockProps {
258
258
  description?: string;
259
259
  size?: 's' | 'm' | 'l';
260
260
  items: IconsBlockItemProps[];
261
+ colSizes?: GridColumnSizesType;
261
262
  }
262
263
  interface ContentLayoutBlockParams {
263
264
  size?: ContentSize;
@@ -290,7 +290,7 @@ exports.config = {
290
290
  {
291
291
  fields: ['list'],
292
292
  transformer: common_1.yfmTransformer,
293
- parser: (0, common_1.createItemsParser)(['text']),
293
+ parser: (0, common_1.createItemsParser)(['title', 'text']),
294
294
  },
295
295
  ],
296
296
  [models_1.BlockType.InfoBlock]: [