@gravity-ui/page-constructor 1.2.2 → 1.2.3-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.
Files changed (62) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/cjs/blocks/Companies/Companies.js +2 -6
  3. package/build/cjs/blocks/ContentLayout/schema.js +2 -1
  4. package/build/cjs/blocks/Header/Header.css +0 -3
  5. package/build/cjs/blocks/Header/Header.js +7 -2
  6. package/build/cjs/blocks/Header/schema.js +2 -1
  7. package/build/cjs/blocks/Tabs/Tabs.js +3 -2
  8. package/build/cjs/blocks/Tabs/schema.js +2 -1
  9. package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
  10. package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +2 -2
  11. package/build/cjs/components/Image/Image.d.ts +3 -5
  12. package/build/cjs/components/Image/Image.js +9 -5
  13. package/build/cjs/components/Image/schema.d.ts +52 -0
  14. package/build/cjs/components/Image/schema.js +52 -0
  15. package/build/cjs/components/Media/Image/Image.js +3 -3
  16. package/build/cjs/components/Media/Image/utils.d.ts +2 -2
  17. package/build/cjs/models/constructor-items/blocks.d.ts +4 -8
  18. package/build/cjs/models/constructor-items/common.d.ts +11 -7
  19. package/build/cjs/schema/validators/common.d.ts +0 -30
  20. package/build/cjs/schema/validators/common.js +4 -30
  21. package/build/cjs/sub-blocks/BackgroundCard/schema.js +2 -1
  22. package/build/cjs/sub-blocks/BasicCard/BasicCard.js +1 -1
  23. package/build/cjs/sub-blocks/BasicCard/schema.js +2 -1
  24. package/build/cjs/sub-blocks/Content/Content.css +8 -0
  25. package/build/cjs/sub-blocks/Partner/Partner.js +1 -1
  26. package/build/cjs/sub-blocks/Partner/schema.js +2 -1
  27. package/build/cjs/sub-blocks/Quote/Quote.js +3 -2
  28. package/build/cjs/sub-blocks/Quote/schema.js +2 -1
  29. package/build/cjs/sub-blocks/TutorialCard/TutorialCard.js +2 -2
  30. package/build/cjs/sub-blocks/TutorialCard/schema.js +2 -1
  31. package/build/esm/blocks/Companies/Companies.js +2 -6
  32. package/build/esm/blocks/ContentLayout/schema.js +2 -1
  33. package/build/esm/blocks/Header/Header.css +0 -3
  34. package/build/esm/blocks/Header/Header.js +7 -2
  35. package/build/esm/blocks/Header/schema.js +2 -1
  36. package/build/esm/blocks/Tabs/Tabs.js +3 -2
  37. package/build/esm/blocks/Tabs/schema.js +2 -1
  38. package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
  39. package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +2 -2
  40. package/build/esm/components/Image/Image.d.ts +3 -5
  41. package/build/esm/components/Image/Image.js +9 -5
  42. package/build/esm/components/Image/schema.d.ts +52 -0
  43. package/build/esm/components/Image/schema.js +49 -0
  44. package/build/esm/components/Media/Image/Image.js +3 -3
  45. package/build/esm/components/Media/Image/utils.d.ts +2 -2
  46. package/build/esm/models/constructor-items/blocks.d.ts +4 -8
  47. package/build/esm/models/constructor-items/common.d.ts +11 -7
  48. package/build/esm/schema/validators/common.d.ts +0 -30
  49. package/build/esm/schema/validators/common.js +1 -27
  50. package/build/esm/sub-blocks/BackgroundCard/schema.js +2 -1
  51. package/build/esm/sub-blocks/BasicCard/BasicCard.js +1 -1
  52. package/build/esm/sub-blocks/BasicCard/schema.js +2 -1
  53. package/build/esm/sub-blocks/Content/Content.css +8 -0
  54. package/build/esm/sub-blocks/Partner/Partner.js +1 -1
  55. package/build/esm/sub-blocks/Partner/schema.js +2 -1
  56. package/build/esm/sub-blocks/Quote/Quote.js +3 -2
  57. package/build/esm/sub-blocks/Quote/schema.js +2 -1
  58. package/build/esm/sub-blocks/TutorialCard/TutorialCard.js +2 -2
  59. package/build/esm/sub-blocks/TutorialCard/schema.js +2 -1
  60. package/package.json +4 -1
  61. package/server/models/constructor-items/blocks.d.ts +4 -8
  62. package/server/models/constructor-items/common.d.ts +11 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.2.3](https://github.com/gravity-ui/page-constructor/compare/v1.2.2...v1.2.3) (2022-10-14)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * content links margin ([6977b96](https://github.com/gravity-ui/page-constructor/commit/6977b9601e3936ba5293eadeeaeccd640814125f))
9
+
3
10
  ## [1.2.2](https://github.com/gravity-ui/page-constructor/compare/v1.2.1...v1.2.2) (2022-10-14)
4
11
 
5
12
 
@@ -5,21 +5,17 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = (0, tslib_1.__importStar)(require("react"));
6
6
  const utils_1 = require("../../utils");
7
7
  const AnimateBlock_1 = (0, tslib_1.__importDefault)(require("../../components/AnimateBlock/AnimateBlock"));
8
- const constants_1 = require("../../constants");
9
8
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
9
+ const components_1 = require("../../components");
10
10
  const b = (0, utils_1.block)('companies-block');
11
11
  const CompaniesBlock = ({ title, images, animated }) => {
12
12
  const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
13
13
  const themedImages = (0, utils_1.getThemedValue)(images, theme) || {};
14
- const { desktop, mobile, tablet, alt } = themedImages;
15
14
  return (react_1.default.createElement(AnimateBlock_1.default, { className: b(), offset: 150, animate: animated },
16
15
  react_1.default.createElement("div", { className: b('content') },
17
16
  react_1.default.createElement("h2", { className: b('title') }, title),
18
17
  react_1.default.createElement("div", { className: b('images') },
19
- react_1.default.createElement("picture", null,
20
- react_1.default.createElement("source", { srcSet: desktop, media: `(min-width: ${constants_1.BREAKPOINTS.md}px)` }),
21
- react_1.default.createElement("source", { srcSet: tablet, media: `(min-width: ${constants_1.BREAKPOINTS.sm}px)` }),
22
- react_1.default.createElement("img", { className: b('image'), srcSet: mobile, alt: alt }))))));
18
+ react_1.default.createElement(components_1.Image, Object.assign({}, themedImages))))));
23
19
  };
24
20
  exports.CompaniesBlock = CompaniesBlock;
25
21
  exports.default = exports.CompaniesBlock;
@@ -4,6 +4,7 @@ exports.ContentLayoutBlock = void 0;
4
4
  const schema_1 = require("../../sub-blocks/Content/schema");
5
5
  const utils_1 = require("../../schema/validators/utils");
6
6
  const common_1 = require("../../schema/validators/common");
7
+ const schema_2 = require("../../components/Image/schema");
7
8
  exports.ContentLayoutBlock = {
8
9
  'content-layout-block': {
9
10
  additionalProperties: false,
@@ -12,7 +13,7 @@ exports.ContentLayoutBlock = {
12
13
  type: 'string',
13
14
  enum: common_1.contentSizes,
14
15
  },
15
- background: common_1.ImageObjectProps,
16
+ background: schema_2.ImageObjectProps,
16
17
  centered: {
17
18
  type: 'boolean',
18
19
  },
@@ -189,9 +189,6 @@ unpredictable css rules order in build */
189
189
  .pc-header-block_has-media .pc-header-block__content {
190
190
  padding-top: 48px;
191
191
  }
192
- .pc-header-block_has-background .pc-header-block__background-img {
193
- display: none;
194
- }
195
192
  .pc-header-block .pc-header-block__content_vertical-offset_s, .pc-header-block .pc-header-block__content_vertical-offset_m, .pc-header-block .pc-header-block__content_vertical-offset_l, .pc-header-block .pc-header-block__content_vertical-offset_xl {
196
193
  padding: calc(96px - 16px) 0;
197
194
  }
@@ -11,10 +11,15 @@ const utils_2 = require("./utils");
11
11
  const YFMWrapper_1 = (0, tslib_1.__importDefault)(require("../../components/YFMWrapper/YFMWrapper"));
12
12
  const HeaderBreadcrumbs_1 = (0, tslib_1.__importDefault)(require("../../components/HeaderBreadcrumbs/HeaderBreadcrumbs"));
13
13
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
14
+ const utils_3 = require("../../components/Media/Image/utils");
14
15
  const b = (0, utils_1.block)('header-block');
15
16
  const Background = ({ background }) => {
16
- const { url, color, disableCompress, fullWidth, fullWidthMedia } = background;
17
- return (0, guards_1.headerHasMediaBackground)(background) ? (react_1.default.createElement(components_1.BackgroundMedia, Object.assign({}, background, { mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) }))) : (react_1.default.createElement(components_1.BackgroundImage, { src: url, className: b('background', { 'full-width-media': fullWidthMedia }), imageClassName: b('background-img'), style: { backgroundColor: fullWidth ? 'none' : color }, disableCompress: disableCompress }));
17
+ const { url, color, disableCompress, fullWidth, fullWidthMedia, image } = background;
18
+ const imageObject = (url && (0, utils_3.getMediaImage)(url)) || image;
19
+ if (imageObject && disableCompress) {
20
+ imageObject.disableCompress = disableCompress;
21
+ }
22
+ return (0, guards_1.headerHasMediaBackground)(background) ? (react_1.default.createElement(components_1.BackgroundMedia, Object.assign({}, background, { mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) }))) : (react_1.default.createElement(components_1.BackgroundImage, Object.assign({}, imageObject, { className: b('background', { 'full-width-media': fullWidthMedia }), imageClassName: b('background-img'), style: { backgroundColor: fullWidth ? 'none' : color } })));
18
23
  };
19
24
  const FullWidthBackground = ({ background }) => (react_1.default.createElement("div", { className: b('background', { ['full-width']: true }), style: { backgroundColor: background === null || background === void 0 ? void 0 : background.color } }));
20
25
  const HeaderBlock = (props) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HeaderBlock = exports.HeaderProperties = void 0;
4
4
  const common_1 = require("../../schema/validators/common");
5
5
  const utils_1 = require("../../schema/validators/utils");
6
+ const schema_1 = require("../../components/Image/schema");
6
7
  const HeaderMedia = {
7
8
  type: 'object',
8
9
  additionalProperties: false,
@@ -28,7 +29,7 @@ exports.HeaderProperties = {
28
29
  type: 'string',
29
30
  enum: ['default', 'large'],
30
31
  },
31
- image: (0, common_1.withTheme)(common_1.ImageProps),
32
+ image: (0, common_1.withTheme)(schema_1.ImageProps),
32
33
  video: (0, common_1.withTheme)(common_1.VideoProps),
33
34
  backLink: {
34
35
  type: 'object',
@@ -13,6 +13,7 @@ const FullscreenImage_1 = (0, tslib_1.__importDefault)(require("../../components
13
13
  const Media_1 = (0, tslib_1.__importDefault)(require("../../components/Media/Media"));
14
14
  const Links_1 = (0, tslib_1.__importDefault)(require("../../components/Link/Links"));
15
15
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
16
+ const utils_2 = require("../../components/Media/Image/utils");
16
17
  const b = (0, utils_1.block)('TabsBlock');
17
18
  const TabsBlock = ({ items, title, description, animated }) => {
18
19
  const [activeTab, setActiveTab] = (0, react_1.useState)(items[0].tabName);
@@ -23,7 +24,7 @@ const TabsBlock = ({ items, title, description, animated }) => {
23
24
  let imageProps;
24
25
  if (activeTabData) {
25
26
  const themedImage = (0, utils_1.getThemedValue)(activeTabData.image, theme);
26
- imageProps = typeof themedImage === 'string' ? { src: themedImage } : themedImage;
27
+ imageProps = themedImage && (0, utils_2.getMediaImage)(themedImage);
27
28
  }
28
29
  const showMedia = Boolean((activeTabData === null || activeTabData === void 0 ? void 0 : activeTabData.media) || imageProps);
29
30
  return (react_1.default.createElement(AnimateBlock_1.default, { className: b(), onScroll: () => setPlay(true), animate: animated },
@@ -36,7 +37,7 @@ const TabsBlock = ({ items, title, description, animated }) => {
36
37
  } },
37
38
  (activeTabData === null || activeTabData === void 0 ? void 0 : activeTabData.media) && (react_1.default.createElement(Media_1.default, Object.assign({}, (0, utils_1.getThemedValue)(activeTabData.media, theme), { key: activeTab, className: b('media'), playVideo: play }))),
38
39
  imageProps && (react_1.default.createElement(react_1.Fragment, null,
39
- react_1.default.createElement(FullscreenImage_1.default, { imageClassName: b('image'), src: (imageProps && imageProps.src) || 'default_image', alt: imageProps && imageProps.alt, disableCompress: imageProps === null || imageProps === void 0 ? void 0 : imageProps.disableCompress }),
40
+ react_1.default.createElement(FullscreenImage_1.default, Object.assign({}, imageProps, { imageClassName: b('image') })),
40
41
  activeTabData && (react_1.default.createElement("p", { className: b('caption') }, activeTabData.caption)))))),
41
42
  react_1.default.createElement(grid_1.Col, { sizes: { all: 12, md: showMedia ? 4 : 8 }, className: b('content') },
42
43
  react_1.default.createElement("div", { className: b('content-wrapper', {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TabsBlock = exports.tabsItem = void 0;
4
4
  const utils_1 = require("../../schema/validators/utils");
5
5
  const common_1 = require("../../schema/validators/common");
6
+ const schema_1 = require("../../components/Image/schema");
6
7
  exports.tabsItem = {
7
8
  type: 'object',
8
9
  additionalProperties: false,
@@ -27,7 +28,7 @@ exports.tabsItem = {
27
28
  //TODO deprecated
28
29
  link: common_1.LinkProps,
29
30
  links: (0, utils_1.filteredArray)(common_1.LinkProps),
30
- image: (0, common_1.withTheme)(common_1.ImageProps),
31
+ image: (0, common_1.withTheme)(schema_1.ImageProps),
31
32
  },
32
33
  };
33
34
  exports.TabsBlock = {
@@ -6,9 +6,9 @@ const utils_1 = require("../../utils");
6
6
  const Image_1 = (0, tslib_1.__importDefault)(require("../Image/Image"));
7
7
  const b = (0, utils_1.block)('storage-background-image');
8
8
  const BackgroundImage = (props) => {
9
- const { children, src, alt, disableCompress, className, imageClassName, style, hide } = props;
9
+ const { children, src, desktop, className, imageClassName, style, hide } = props;
10
10
  return (react_1.default.createElement("div", { className: b(null, className), style: style },
11
- src && !hide && (react_1.default.createElement(Image_1.default, { className: b('img', imageClassName), src: src, alt: alt, disableCompress: disableCompress })),
11
+ (src || desktop) && !hide && react_1.default.createElement(Image_1.default, Object.assign({}, props, { className: b('img', imageClassName) })),
12
12
  children && react_1.default.createElement("div", { className: b('container') }, children)));
13
13
  };
14
14
  exports.default = BackgroundImage;
@@ -1,6 +1,6 @@
1
1
  import { CSSProperties } from 'react';
2
- import { ImageProps } from '../Image/Image';
3
- export interface FullScreenImageProps extends ImageProps {
2
+ import { ImageOwnProps } from '../Image/Image';
3
+ export interface FullScreenImageProps extends ImageOwnProps {
4
4
  imageClassName?: string;
5
5
  modalImageClass?: string;
6
6
  imageStyle?: CSSProperties;
@@ -1,11 +1,9 @@
1
1
  import { CSSProperties, MouseEventHandler } from 'react';
2
- export interface ImageProps {
3
- src: string;
4
- alt?: string;
5
- disableCompress?: boolean;
2
+ import { ImageDeviceProps, ImageObjectProps } from '../../models';
3
+ export interface ImageOwnProps extends Partial<ImageObjectProps>, Partial<ImageDeviceProps> {
6
4
  style?: CSSProperties;
7
5
  className?: string;
8
6
  onClick?: MouseEventHandler;
9
7
  }
10
- declare const Image: (props: ImageProps) => JSX.Element | null;
8
+ declare const Image: (props: ImageOwnProps) => JSX.Element | null;
11
9
  export default Image;
@@ -3,21 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const react_1 = (0, tslib_1.__importStar)(require("react"));
5
5
  const projectSettingsContext_1 = require("../../context/projectSettingsContext");
6
+ const constants_1 = require("../../constants");
6
7
  const Image = (props) => {
7
8
  const projectSettings = (0, react_1.useContext)(projectSettingsContext_1.ProjectSettingsContext);
8
- const { src, alt, disableCompress, style, className, onClick } = props;
9
+ const { src, alt, disableCompress, tablet, desktop, mobile, style, className, onClick } = props;
9
10
  const [imgLoadingError, setImgLoadingError] = (0, react_1.useState)(false);
10
- if (!src) {
11
+ const imageSrc = src || desktop;
12
+ if (!imageSrc) {
11
13
  return null;
12
14
  }
13
15
  // TODO: Temporary solution for .svg images
14
16
  const disableWebp = projectSettings.disableCompress ||
15
17
  disableCompress ||
16
- src.endsWith('.svg') ||
18
+ imageSrc.endsWith('.svg') ||
17
19
  imgLoadingError;
18
- const webp = src.endsWith('.webp') ? src : src + '.webp';
20
+ const webp = imageSrc.endsWith('.webp') ? src : src + '.webp';
19
21
  return (react_1.default.createElement("picture", null,
20
22
  disableWebp ? null : react_1.default.createElement("source", { srcSet: webp, type: "image/webp" }),
21
- react_1.default.createElement("img", { className: className, src: src, alt: alt, style: style, onClick: onClick, onError: () => setImgLoadingError(true) })));
23
+ mobile && react_1.default.createElement("source", { srcSet: mobile, media: `(max-width: ${constants_1.BREAKPOINTS.sm}px)` }),
24
+ tablet && react_1.default.createElement("source", { srcSet: tablet, media: `(max-width: ${constants_1.BREAKPOINTS.md}px)` }),
25
+ react_1.default.createElement("img", { className: className, src: imageSrc, alt: alt, style: style, onClick: onClick, onError: () => setImgLoadingError(true) })));
22
26
  };
23
27
  exports.default = Image;
@@ -0,0 +1,52 @@
1
+ export declare const ImageDeviceProps: {
2
+ type: string;
3
+ additionalProperties: boolean;
4
+ required: string[];
5
+ properties: {
6
+ desktop: {
7
+ type: string;
8
+ };
9
+ tablet: {
10
+ type: string;
11
+ };
12
+ mobile: {
13
+ type: string;
14
+ };
15
+ alt: {
16
+ type: string;
17
+ };
18
+ disableCompress: {
19
+ type: string;
20
+ };
21
+ };
22
+ };
23
+ export declare const ImageObjectProps: {
24
+ type: string;
25
+ additionalProperties: boolean;
26
+ required: string[];
27
+ properties: {
28
+ src: {
29
+ type: string;
30
+ pattern: string;
31
+ };
32
+ alt: {
33
+ type: string;
34
+ };
35
+ disableCompress: {
36
+ type: string;
37
+ };
38
+ };
39
+ };
40
+ export declare const ImageProps: {
41
+ oneOf: ({
42
+ type: string;
43
+ properties: {
44
+ when: {
45
+ type: string;
46
+ };
47
+ };
48
+ } | {
49
+ type: string;
50
+ pattern: string;
51
+ })[];
52
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageProps = exports.ImageObjectProps = exports.ImageDeviceProps = void 0;
4
+ const utils_1 = require("../../schema/validators/utils");
5
+ const common_1 = require("../../schema/validators/common");
6
+ exports.ImageDeviceProps = {
7
+ type: 'object',
8
+ additionalProperties: false,
9
+ required: ['desktop', 'mobile'],
10
+ properties: {
11
+ desktop: { type: 'string' },
12
+ tablet: {
13
+ type: 'string',
14
+ },
15
+ mobile: {
16
+ type: 'string',
17
+ },
18
+ alt: {
19
+ type: 'string',
20
+ },
21
+ disableCompress: {
22
+ type: 'boolean',
23
+ },
24
+ },
25
+ };
26
+ exports.ImageObjectProps = {
27
+ type: 'object',
28
+ additionalProperties: false,
29
+ required: ['src'],
30
+ properties: {
31
+ src: {
32
+ type: 'string',
33
+ pattern: common_1.urlPattern,
34
+ },
35
+ alt: {
36
+ type: 'string',
37
+ },
38
+ disableCompress: {
39
+ type: 'boolean',
40
+ },
41
+ },
42
+ };
43
+ exports.ImageProps = {
44
+ oneOf: [
45
+ {
46
+ type: 'string',
47
+ pattern: common_1.urlPattern,
48
+ },
49
+ (0, utils_1.filteredItem)(Object.assign({}, exports.ImageObjectProps)),
50
+ (0, utils_1.filteredItem)(Object.assign({}, exports.ImageDeviceProps)),
51
+ ],
52
+ };
@@ -36,16 +36,16 @@ const Image = (props) => {
36
36
  const imageClass = b('item', { withVideo: Boolean(video) && !hasVideoFallback }, imageClassName);
37
37
  const imageSlider = (imageArray) => (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard }, imageArray.map((item) => {
38
38
  const itemData = (0, utils_1.getMediaImage)(item);
39
- return (react_1.default.createElement(FullscreenImage_1.default, { key: itemData.src, src: itemData.src, alt: itemData.alt, imageClassName: imageClass, imageStyle: { height } }));
39
+ return (react_1.default.createElement(FullscreenImage_1.default, Object.assign({ key: itemData.alt }, itemData, { imageClassName: imageClass, imageStyle: { height } })));
40
40
  })));
41
41
  const imageBackground = (oneImage) => {
42
42
  const imageData = (0, utils_1.getMediaImage)(oneImage);
43
43
  return (react_1.default.createElement(react_spring_1.animated.div, { style: { transform: parallaxInterpolate } },
44
- react_1.default.createElement(BackgroundImage_1.default, { className: imageClass, src: imageData.src, style: { height }, disableCompress: imageData.disableCompress })));
44
+ react_1.default.createElement(BackgroundImage_1.default, Object.assign({}, imageData, { className: imageClass, style: { height } }))));
45
45
  };
46
46
  const imageOnly = (oneImage) => {
47
47
  const imageData = (0, utils_1.getMediaImage)(oneImage);
48
- return (react_1.default.createElement(Image_1.default, { className: imageClass, src: imageData.src, alt: imageData.alt, style: { height }, disableCompress: imageData.disableCompress }));
48
+ return react_1.default.createElement(Image_1.default, Object.assign({}, imageData, { className: imageClass, style: { height } }));
49
49
  };
50
50
  if (Array.isArray(image)) {
51
51
  return imageSlider(image);
@@ -1,2 +1,2 @@
1
- import { ImageObjectProps, ImageProps } from '../../../models';
2
- export declare function getMediaImage(image: ImageProps): ImageObjectProps;
1
+ import { ImageProps } from '../../../models';
2
+ export declare function getMediaImage(image: ImageProps): import("../../../models").ImageObjectProps | import("../../../models").ImageDeviceProps;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { BackgroundImageProps, ButtonProps, ContentSize, ContentTextSize, ContentTheme, FileLinkProps, HeaderBreadCrumbsProps, HeaderImageSize, HeaderOffset, HeaderWidth, Justify, LinkProps, LinkTheme, MediaDirection, MediaProps, PreviewItemProps, PreviewRatioMediaContent, TextSize, TextTheme, ThemedImage, ThemedMediaProps, ThemedMediaVideoProps, TitleProps, LegendTableMarkerType, AnchorProps, TitleBaseProps, Animatable, BlockHeaderProps } from './common';
2
+ import { BackgroundImageProps, ButtonProps, ContentSize, ContentTextSize, ContentTheme, FileLinkProps, HeaderBreadCrumbsProps, HeaderImageSize, HeaderOffset, HeaderWidth, Justify, LinkProps, LinkTheme, MediaDirection, MediaProps, PreviewItemProps, PreviewRatioMediaContent, TextSize, TextTheme, ThemedImage, ThemedMediaProps, ThemedMediaVideoProps, TitleProps, LegendTableMarkerType, AnchorProps, TitleBaseProps, Animatable, BlockHeaderProps, ImageDeviceProps, ImageProps } from './common';
3
3
  import { ThemeSupporting } from '../../utils';
4
4
  import { GridColumnSize, GridColumnSizesType } from '../../grid/types';
5
5
  import { BannerCardProps, SubBlock } from './sub-blocks';
@@ -79,7 +79,8 @@ export interface HeaderSliderBlockProps extends Omit<SliderProps, 'title' | 'des
79
79
  }
80
80
  interface HeaderBackgroundProps {
81
81
  color?: string;
82
- url?: string;
82
+ url?: ImageProps;
83
+ /** @deprecated put it in url props instead */
83
84
  disableCompress?: boolean;
84
85
  }
85
86
  export interface HeaderBlockBackground extends Partial<HeaderBackgroundProps>, Partial<MediaProps> {
@@ -151,12 +152,7 @@ export interface BannerBlockProps extends BannerCardProps, Animatable {
151
152
  }
152
153
  export interface CompaniesBlockProps extends Animatable {
153
154
  title: string;
154
- images: ThemeSupporting<{
155
- desktop: string;
156
- tablet: string;
157
- mobile: string;
158
- alt?: string;
159
- }>;
155
+ images: ThemeSupporting<ImageDeviceProps>;
160
156
  }
161
157
  export interface MediaContentProps {
162
158
  title: string;
@@ -81,17 +81,21 @@ interface LoopProps {
81
81
  start: number;
82
82
  end?: number;
83
83
  }
84
- export interface ImageObjectProps {
85
- src: string;
84
+ export interface ImageInfoProps {
86
85
  alt?: string;
87
86
  disableCompress?: boolean;
88
87
  }
89
- export declare type ImageProps = string | ImageObjectProps;
88
+ export interface ImageObjectProps extends ImageInfoProps {
89
+ src: string;
90
+ }
91
+ export interface ImageDeviceProps extends ImageInfoProps {
92
+ desktop: string;
93
+ mobile: string;
94
+ tablet?: string;
95
+ }
96
+ export declare type ImageProps = string | ImageObjectProps | ImageDeviceProps;
90
97
  export declare type ThemedImage = ThemeSupporting<ImageProps>;
91
- export interface BackgroundImageProps extends React.HTMLProps<HTMLDivElement> {
92
- src?: string;
93
- alt?: string;
94
- disableCompress?: boolean;
98
+ export interface BackgroundImageProps extends React.HTMLProps<HTMLDivElement>, Partial<ImageDeviceProps>, Partial<ImageObjectProps> {
95
99
  style?: CSSProperties;
96
100
  imageClassName?: string;
97
101
  hide?: boolean;
@@ -159,36 +159,6 @@ export declare const JustifyProps: {
159
159
  type: string;
160
160
  enum: string[];
161
161
  };
162
- export declare const ImageObjectProps: {
163
- type: string;
164
- additionalProperties: boolean;
165
- required: string[];
166
- properties: {
167
- src: {
168
- type: string;
169
- pattern: string;
170
- };
171
- alt: {
172
- type: string;
173
- };
174
- disableCompress: {
175
- type: string;
176
- };
177
- };
178
- };
179
- export declare const ImageProps: {
180
- oneOf: ({
181
- type: string;
182
- properties: {
183
- when: {
184
- type: string;
185
- };
186
- };
187
- } | {
188
- type: string;
189
- pattern: string;
190
- })[];
191
- };
192
162
  export declare const DataLensObjectProps: {
193
163
  type: string;
194
164
  additionalProperties: boolean;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.ImageProps = exports.ImageObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.PlayIconProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = exports.urlPattern = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
4
- const utils_1 = require("./utils");
3
+ exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.PlayIconProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = exports.urlPattern = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
5
4
  const pixel_1 = require("./pixel");
6
5
  const models_1 = require("../../models");
6
+ const schema_1 = require("../../components/Image/schema");
7
7
  exports.mediaDirection = ['media-content', 'content-media'];
8
8
  exports.textSize = ['s', 'm', 'l'];
9
9
  exports.containerSizesArray = ['sm', 'md', 'lg', 'xl', 'all'];
@@ -130,32 +130,6 @@ exports.JustifyProps = {
130
130
  type: 'string',
131
131
  enum: ['start', 'center', 'end'],
132
132
  };
133
- exports.ImageObjectProps = {
134
- type: 'object',
135
- additionalProperties: false,
136
- required: ['src'],
137
- properties: {
138
- src: {
139
- type: 'string',
140
- pattern: exports.urlPattern,
141
- },
142
- alt: {
143
- type: 'string',
144
- },
145
- disableCompress: {
146
- type: 'boolean',
147
- },
148
- },
149
- };
150
- exports.ImageProps = {
151
- oneOf: [
152
- {
153
- type: 'string',
154
- pattern: exports.urlPattern,
155
- },
156
- (0, utils_1.filteredItem)(Object.assign({}, exports.ImageObjectProps)),
157
- ],
158
- };
159
133
  exports.DataLensObjectProps = {
160
134
  type: 'object',
161
135
  additionalProperties: false,
@@ -172,7 +146,7 @@ exports.DataLensProps = {
172
146
  };
173
147
  exports.BackgroundProps = {
174
148
  additionalProperties: false,
175
- properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image: exports.ImageProps, color: {
149
+ properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image: schema_1.ImageProps, color: {
176
150
  type: 'string',
177
151
  }, video: exports.VideoProps, height: {
178
152
  type: 'number',
@@ -441,7 +415,7 @@ exports.MediaProps = {
441
415
  type: 'string',
442
416
  },
443
417
  image: {
444
- anyOf: [exports.ImageProps, { type: 'array', items: exports.ImageProps }],
418
+ anyOf: [schema_1.ImageProps, { type: 'array', items: schema_1.ImageProps }],
445
419
  },
446
420
  video: exports.VideoProps,
447
421
  youtube: {
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("../../schema/validators/common");
6
6
  const schema_1 = require("../../components/CardBase/schema");
7
7
  const schema_2 = require("../Content/schema");
8
+ const schema_3 = require("../../components/Image/schema");
8
9
  const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
9
10
  const BackgroundCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size']);
10
11
  exports.BackgroundCard = {
@@ -13,7 +14,7 @@ exports.BackgroundCard = {
13
14
  required: ['title', 'text'],
14
15
  properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BackgroundCardContentProps), { url: {
15
16
  type: 'string',
16
- }, background: (0, common_1.withTheme)(common_1.ImageObjectProps), backgroundColor: {
17
+ }, background: (0, common_1.withTheme)(schema_3.ImageObjectProps), backgroundColor: {
17
18
  type: 'string',
18
19
  }, paddingBottom: {
19
20
  type: 'string',
@@ -13,7 +13,7 @@ const BasicCard = (props) => {
13
13
  const iconProps = icon && (0, utils_2.getMediaImage)(icon);
14
14
  return (react_1.default.createElement(CardBase_1.default, { className: b(), url: url, border: border },
15
15
  react_1.default.createElement(CardBase_1.default.Content, null,
16
- iconProps && (react_1.default.createElement(Image_1.default, { src: iconProps.src, alt: iconProps.alt, className: b('icon'), disableCompress: iconProps.disableCompress })),
16
+ iconProps && react_1.default.createElement(Image_1.default, Object.assign({}, iconProps, { className: b('icon') })),
17
17
  react_1.default.createElement(__1.Content, { title: title, text: text, additionalInfo: additionalInfo, links: links, buttons: buttons, colSizes: { all: 12, md: 12 }, size: "s" }))));
18
18
  };
19
19
  exports.default = BasicCard;
@@ -6,6 +6,7 @@ const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
6
6
  const common_1 = require("../../schema/validators/common");
7
7
  const schema_1 = require("../../components/CardBase/schema");
8
8
  const schema_2 = require("../Content/schema");
9
+ const schema_3 = require("../../components/Image/schema");
9
10
  const BasicCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size', 'theme']);
10
11
  exports.BasicCard = {
11
12
  'basic-card': {
@@ -13,6 +14,6 @@ exports.BasicCard = {
13
14
  required: ['url'],
14
15
  properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BasicCardContentProps), { url: {
15
16
  type: 'string',
16
- }, icon: common_1.ImageProps }),
17
+ }, icon: schema_3.ImageProps }),
17
18
  },
18
19
  };
@@ -26,6 +26,11 @@ unpredictable css rules order in build */
26
26
  margin-top: 0;
27
27
  margin-right: 12px;
28
28
  }
29
+ .pc-content__links {
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: baseline;
33
+ }
29
34
  .pc-content__link {
30
35
  display: block;
31
36
  margin-right: 32px;
@@ -35,6 +40,9 @@ unpredictable css rules order in build */
35
40
  text-align: center;
36
41
  }
37
42
 
43
+ .pc-content_centered .pc-content__links {
44
+ align-items: center;
45
+ }
38
46
  .pc-content_centered .pc-content__link a {
39
47
  justify-content: center;
40
48
  }
@@ -9,7 +9,7 @@ const Partner = ({ text, logo, url, border }) => {
9
9
  const logoData = typeof logo === 'string' ? { src: logo } : logo;
10
10
  return (react_1.default.createElement(components_1.CardBase, { url: url, target: "_blank", className: b(), border: border },
11
11
  react_1.default.createElement(components_1.CardBase.Content, null,
12
- react_1.default.createElement(components_1.Image, { className: b('logo'), src: logoData.src, alt: logoData.alt }),
12
+ react_1.default.createElement(components_1.Image, Object.assign({ className: b('logo') }, logoData)),
13
13
  react_1.default.createElement(components_1.HTML, null, text))));
14
14
  };
15
15
  exports.default = Partner;
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PartnerBlock = void 0;
4
4
  const common_1 = require("../../schema/validators/common");
5
+ const schema_1 = require("../../components/Image/schema");
5
6
  exports.PartnerBlock = {
6
7
  partner: {
7
8
  additionalProperties: false,
8
9
  required: ['text', 'logo', 'url'],
9
10
  properties: Object.assign(Object.assign({}, common_1.BaseProps), { text: {
10
11
  type: 'string',
11
- }, logo: common_1.ImageProps, url: {
12
+ }, logo: schema_1.ImageProps, url: {
12
13
  type: 'string',
13
14
  } }),
14
15
  },
@@ -7,12 +7,13 @@ const utils_1 = require("../../utils");
7
7
  const models_1 = require("../../models");
8
8
  const components_1 = require("../../components");
9
9
  const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
10
+ const utils_2 = require("../../components/Media/Image/utils");
10
11
  const b = (0, utils_1.block)('quote');
11
12
  const Quote = (props) => {
12
13
  const { theme: textTheme = 'light', color, image, border = 'shadow', text, logo, author, url, buttonText, } = props;
13
14
  const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
14
15
  const imageThemed = (0, utils_1.getThemedValue)(image, theme);
15
- const imageData = typeof imageThemed === 'string' ? { src: imageThemed } : imageThemed;
16
+ const imageData = (0, utils_2.getMediaImage)(imageThemed);
16
17
  const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
17
18
  author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
18
19
  url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }) }, buttonText))));
@@ -25,6 +26,6 @@ const Quote = (props) => {
25
26
  react_1.default.createElement(components_1.HTML, null, text)))),
26
27
  renderFooter),
27
28
  react_1.default.createElement("div", { className: b('image-wrapper') },
28
- react_1.default.createElement(components_1.Image, { src: imageData.src, alt: imageData.alt, className: b('image') }))));
29
+ react_1.default.createElement(components_1.Image, Object.assign({}, imageData, { className: b('image') })))));
29
30
  };
30
31
  exports.default = Quote;