@gravity-ui/page-constructor 1.2.3-alpha.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/cjs/blocks/Companies/Companies.js +6 -2
- package/build/cjs/blocks/ContentLayout/schema.js +1 -2
- package/build/cjs/blocks/Header/Header.css +9 -2
- package/build/cjs/blocks/Header/Header.js +9 -6
- package/build/cjs/blocks/Header/schema.d.ts +244 -196
- package/build/cjs/blocks/Header/schema.js +23 -3
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +122 -98
- package/build/cjs/blocks/Tabs/Tabs.js +2 -3
- package/build/cjs/blocks/Tabs/schema.js +1 -2
- package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +2 -2
- package/build/cjs/components/Image/Image.d.ts +5 -3
- package/build/cjs/components/Image/Image.js +5 -9
- package/build/cjs/components/Media/Image/Image.js +3 -3
- package/build/cjs/components/Media/Image/utils.d.ts +2 -2
- package/build/cjs/models/constructor-items/blocks.d.ts +9 -5
- package/build/cjs/models/constructor-items/common.d.ts +7 -11
- package/build/cjs/models/guards.d.ts +3 -2
- package/build/cjs/models/guards.js +5 -1
- package/build/cjs/schema/validators/common.d.ts +31 -0
- package/build/cjs/schema/validators/common.js +32 -5
- package/build/cjs/sub-blocks/BackgroundCard/schema.js +1 -2
- package/build/cjs/sub-blocks/BasicCard/BasicCard.js +1 -1
- package/build/cjs/sub-blocks/BasicCard/schema.js +1 -2
- package/build/cjs/sub-blocks/Content/Content.css +2 -1
- package/build/cjs/sub-blocks/Partner/Partner.js +1 -1
- package/build/cjs/sub-blocks/Partner/schema.js +1 -2
- package/build/cjs/sub-blocks/Quote/Quote.js +2 -3
- package/build/cjs/sub-blocks/Quote/schema.js +3 -4
- package/build/cjs/sub-blocks/TutorialCard/TutorialCard.js +2 -2
- package/build/cjs/sub-blocks/TutorialCard/schema.js +1 -2
- package/build/esm/blocks/Companies/Companies.js +6 -2
- package/build/esm/blocks/ContentLayout/schema.js +1 -2
- package/build/esm/blocks/Header/Header.css +9 -2
- package/build/esm/blocks/Header/Header.js +10 -7
- package/build/esm/blocks/Header/schema.d.ts +244 -196
- package/build/esm/blocks/Header/schema.js +23 -3
- package/build/esm/blocks/HeaderSlider/schema.d.ts +122 -98
- package/build/esm/blocks/Tabs/Tabs.js +2 -3
- package/build/esm/blocks/Tabs/schema.js +1 -2
- package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +2 -2
- package/build/esm/components/Image/Image.d.ts +5 -3
- package/build/esm/components/Image/Image.js +5 -9
- package/build/esm/components/Media/Image/Image.js +3 -3
- package/build/esm/components/Media/Image/utils.d.ts +2 -2
- package/build/esm/models/constructor-items/blocks.d.ts +9 -5
- package/build/esm/models/constructor-items/common.d.ts +7 -11
- package/build/esm/models/guards.d.ts +3 -2
- package/build/esm/models/guards.js +3 -0
- package/build/esm/schema/validators/common.d.ts +31 -0
- package/build/esm/schema/validators/common.js +28 -1
- package/build/esm/sub-blocks/BackgroundCard/schema.js +1 -2
- package/build/esm/sub-blocks/BasicCard/BasicCard.js +1 -1
- package/build/esm/sub-blocks/BasicCard/schema.js +1 -2
- package/build/esm/sub-blocks/Content/Content.css +2 -1
- package/build/esm/sub-blocks/Partner/Partner.js +1 -1
- package/build/esm/sub-blocks/Partner/schema.js +1 -2
- package/build/esm/sub-blocks/Quote/Quote.js +2 -3
- package/build/esm/sub-blocks/Quote/schema.js +1 -2
- package/build/esm/sub-blocks/TutorialCard/TutorialCard.js +2 -2
- package/build/esm/sub-blocks/TutorialCard/schema.js +1 -2
- package/package.json +1 -4
- package/server/models/constructor-items/blocks.d.ts +9 -5
- package/server/models/constructor-items/common.d.ts +7 -11
- package/server/models/guards.d.ts +3 -2
- package/server/models/guards.js +5 -1
- package/build/cjs/components/Image/schema.d.ts +0 -56
- package/build/cjs/components/Image/schema.js +0 -54
- package/build/esm/components/Image/schema.d.ts +0 -56
- package/build/esm/components/Image/schema.js +0 -51
|
@@ -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.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.PlayIconProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = 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;
|
|
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");
|
|
4
5
|
const pixel_1 = require("./pixel");
|
|
5
6
|
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'];
|
|
@@ -18,6 +18,7 @@ exports.fileLinkTypes = ['vertical', 'horizontal'];
|
|
|
18
18
|
exports.dividerEnum = { enum: [0, 'xxs', 'xs', 's', 'm', 'l', 'xl', 'xxl', 'xxxl'] };
|
|
19
19
|
exports.sizeNumber = { type: 'number', maximum: 12, minimum: 1 };
|
|
20
20
|
exports.contentThemes = ['default', 'dark', 'light'];
|
|
21
|
+
exports.urlPattern = '^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?$';
|
|
21
22
|
exports.BaseProps = {
|
|
22
23
|
type: {},
|
|
23
24
|
when: {},
|
|
@@ -129,6 +130,32 @@ exports.JustifyProps = {
|
|
|
129
130
|
type: 'string',
|
|
130
131
|
enum: ['start', 'center', 'end'],
|
|
131
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
|
+
};
|
|
132
159
|
exports.DataLensObjectProps = {
|
|
133
160
|
type: 'object',
|
|
134
161
|
additionalProperties: false,
|
|
@@ -145,7 +172,7 @@ exports.DataLensProps = {
|
|
|
145
172
|
};
|
|
146
173
|
exports.BackgroundProps = {
|
|
147
174
|
additionalProperties: false,
|
|
148
|
-
properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image:
|
|
175
|
+
properties: Object.assign(Object.assign({}, exports.AnimatableProps), { image: exports.ImageProps, color: {
|
|
149
176
|
type: 'string',
|
|
150
177
|
}, video: exports.VideoProps, height: {
|
|
151
178
|
type: 'number',
|
|
@@ -214,7 +241,7 @@ exports.authorItem = {
|
|
|
214
241
|
},
|
|
215
242
|
avatar: {
|
|
216
243
|
type: 'string',
|
|
217
|
-
pattern:
|
|
244
|
+
pattern: exports.urlPattern,
|
|
218
245
|
},
|
|
219
246
|
description: {
|
|
220
247
|
type: 'string',
|
|
@@ -414,7 +441,7 @@ exports.MediaProps = {
|
|
|
414
441
|
type: 'string',
|
|
415
442
|
},
|
|
416
443
|
image: {
|
|
417
|
-
anyOf: [
|
|
444
|
+
anyOf: [exports.ImageProps, { type: 'array', items: exports.ImageProps }],
|
|
418
445
|
},
|
|
419
446
|
video: exports.VideoProps,
|
|
420
447
|
youtube: {
|
|
@@ -5,7 +5,6 @@ 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");
|
|
9
8
|
const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
|
|
10
9
|
const BackgroundCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size']);
|
|
11
10
|
exports.BackgroundCard = {
|
|
@@ -14,7 +13,7 @@ exports.BackgroundCard = {
|
|
|
14
13
|
required: ['title', 'text'],
|
|
15
14
|
properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BackgroundCardContentProps), { url: {
|
|
16
15
|
type: 'string',
|
|
17
|
-
}, background: (0, common_1.withTheme)(
|
|
16
|
+
}, background: (0, common_1.withTheme)(common_1.ImageObjectProps), backgroundColor: {
|
|
18
17
|
type: 'string',
|
|
19
18
|
}, paddingBottom: {
|
|
20
19
|
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,
|
|
16
|
+
iconProps && (react_1.default.createElement(Image_1.default, { src: iconProps.src, alt: iconProps.alt, className: b('icon'), disableCompress: iconProps.disableCompress })),
|
|
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,7 +6,6 @@ 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");
|
|
10
9
|
const BasicCardContentProps = lodash_1.default.omit(schema_2.ContentBase, ['size', 'theme']);
|
|
11
10
|
exports.BasicCard = {
|
|
12
11
|
'basic-card': {
|
|
@@ -14,6 +13,6 @@ exports.BasicCard = {
|
|
|
14
13
|
required: ['url'],
|
|
15
14
|
properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), schema_1.CardBase), BasicCardContentProps), { url: {
|
|
16
15
|
type: 'string',
|
|
17
|
-
}, icon:
|
|
16
|
+
}, icon: common_1.ImageProps }),
|
|
18
17
|
},
|
|
19
18
|
};
|
|
@@ -22,10 +22,11 @@ unpredictable css rules order in build */
|
|
|
22
22
|
color: var(--yc-color-text-primary);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.pc-content__button {
|
|
25
|
+
.pc-content__button.pc-content__button {
|
|
26
26
|
margin-top: 0;
|
|
27
27
|
margin-right: 12px;
|
|
28
28
|
}
|
|
29
|
+
|
|
29
30
|
.pc-content__links {
|
|
30
31
|
display: flex;
|
|
31
32
|
flex-direction: column;
|
|
@@ -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,
|
|
12
|
+
react_1.default.createElement(components_1.Image, { className: b('logo'), src: logoData.src, alt: logoData.alt }),
|
|
13
13
|
react_1.default.createElement(components_1.HTML, null, text))));
|
|
14
14
|
};
|
|
15
15
|
exports.default = Partner;
|
|
@@ -2,14 +2,13 @@
|
|
|
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");
|
|
6
5
|
exports.PartnerBlock = {
|
|
7
6
|
partner: {
|
|
8
7
|
additionalProperties: false,
|
|
9
8
|
required: ['text', 'logo', 'url'],
|
|
10
9
|
properties: Object.assign(Object.assign({}, common_1.BaseProps), { text: {
|
|
11
10
|
type: 'string',
|
|
12
|
-
}, logo:
|
|
11
|
+
}, logo: common_1.ImageProps, url: {
|
|
13
12
|
type: 'string',
|
|
14
13
|
} }),
|
|
15
14
|
},
|
|
@@ -7,13 +7,12 @@ 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");
|
|
11
10
|
const b = (0, utils_1.block)('quote');
|
|
12
11
|
const Quote = (props) => {
|
|
13
12
|
const { theme: textTheme = 'light', color, image, border = 'shadow', text, logo, author, url, buttonText, } = props;
|
|
14
13
|
const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
|
|
15
14
|
const imageThemed = (0, utils_1.getThemedValue)(image, theme);
|
|
16
|
-
const imageData =
|
|
15
|
+
const imageData = typeof imageThemed === 'string' ? { src: imageThemed } : imageThemed;
|
|
17
16
|
const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
|
|
18
17
|
author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
|
|
19
18
|
url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }) }, buttonText))));
|
|
@@ -26,6 +25,6 @@ const Quote = (props) => {
|
|
|
26
25
|
react_1.default.createElement(components_1.HTML, null, text)))),
|
|
27
26
|
renderFooter),
|
|
28
27
|
react_1.default.createElement("div", { className: b('image-wrapper') },
|
|
29
|
-
react_1.default.createElement(components_1.Image,
|
|
28
|
+
react_1.default.createElement(components_1.Image, { src: imageData.src, alt: imageData.alt, className: b('image') }))));
|
|
30
29
|
};
|
|
31
30
|
exports.default = Quote;
|
|
@@ -2,21 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Quote = void 0;
|
|
4
4
|
const common_1 = require("../../schema/validators/common");
|
|
5
|
-
const schema_1 = require("../../components/Image/schema");
|
|
6
5
|
exports.Quote = {
|
|
7
6
|
quote: {
|
|
8
7
|
additionalProperties: false,
|
|
9
8
|
required: ['text', 'image', 'logo'],
|
|
10
9
|
properties: Object.assign(Object.assign({}, common_1.BaseProps), { text: {
|
|
11
10
|
type: 'string',
|
|
12
|
-
}, image: (0, common_1.withTheme)(
|
|
11
|
+
}, image: (0, common_1.withTheme)(common_1.ImageProps), logo: {
|
|
13
12
|
type: 'string',
|
|
14
|
-
pattern:
|
|
13
|
+
pattern: common_1.urlPattern,
|
|
15
14
|
}, color: {
|
|
16
15
|
type: 'string',
|
|
17
16
|
}, url: {
|
|
18
17
|
type: 'string',
|
|
19
|
-
pattern:
|
|
18
|
+
pattern: common_1.urlPattern,
|
|
20
19
|
}, theme: common_1.ThemeProps, author: common_1.authorItem }),
|
|
21
20
|
},
|
|
22
21
|
};
|
|
@@ -8,8 +8,8 @@ const components_1 = require("../../components/");
|
|
|
8
8
|
const utils_2 = require("../../components/Media/Image/utils");
|
|
9
9
|
const b = (0, utils_1.block)('tutorial-card');
|
|
10
10
|
function iconElement(icon, title) {
|
|
11
|
-
const
|
|
12
|
-
return react_1.default.createElement(components_1.Image,
|
|
11
|
+
const { src, alt = title, disableCompress } = (0, utils_2.getMediaImage)(icon !== null && icon !== void 0 ? icon : {});
|
|
12
|
+
return react_1.default.createElement(components_1.Image, { src: src, alt: alt, className: b('icon'), disableCompress: disableCompress });
|
|
13
13
|
}
|
|
14
14
|
const TutorialCard = (props) => {
|
|
15
15
|
const { url, title, text, border, icon } = props;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TutorialCard = void 0;
|
|
4
4
|
const common_1 = require("../../schema/validators/common");
|
|
5
|
-
const schema_1 = require("../../components/Image/schema");
|
|
6
5
|
exports.TutorialCard = {
|
|
7
6
|
'tutorial-card': {
|
|
8
7
|
additionalProperties: false,
|
|
@@ -13,6 +12,6 @@ exports.TutorialCard = {
|
|
|
13
12
|
type: 'string',
|
|
14
13
|
}, text: {
|
|
15
14
|
type: 'string',
|
|
16
|
-
}, icon:
|
|
15
|
+
}, icon: common_1.ImageProps }),
|
|
17
16
|
},
|
|
18
17
|
};
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
import { block, getThemedValue } from '../../utils';
|
|
3
3
|
import AnimateBlock from '../../components/AnimateBlock/AnimateBlock';
|
|
4
|
+
import { BREAKPOINTS } from '../../constants';
|
|
4
5
|
import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
|
|
5
|
-
import { Image } from '../../components';
|
|
6
6
|
import './Companies.css';
|
|
7
7
|
const b = block('companies-block');
|
|
8
8
|
export const CompaniesBlock = ({ title, images, animated }) => {
|
|
9
9
|
const { themeValue: theme } = useContext(ThemeValueContext);
|
|
10
10
|
const themedImages = getThemedValue(images, theme) || {};
|
|
11
|
+
const { desktop, mobile, tablet, alt } = themedImages;
|
|
11
12
|
return (React.createElement(AnimateBlock, { className: b(), offset: 150, animate: animated },
|
|
12
13
|
React.createElement("div", { className: b('content') },
|
|
13
14
|
React.createElement("h2", { className: b('title') }, title),
|
|
14
15
|
React.createElement("div", { className: b('images') },
|
|
15
|
-
React.createElement(
|
|
16
|
+
React.createElement("picture", null,
|
|
17
|
+
React.createElement("source", { srcSet: desktop, media: `(min-width: ${BREAKPOINTS.md}px)` }),
|
|
18
|
+
React.createElement("source", { srcSet: tablet, media: `(min-width: ${BREAKPOINTS.sm}px)` }),
|
|
19
|
+
React.createElement("img", { className: b('image'), srcSet: mobile, alt: alt }))))));
|
|
16
20
|
};
|
|
17
21
|
export default CompaniesBlock;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ContentBlock } from '../../sub-blocks/Content/schema';
|
|
2
2
|
import { filteredArray } from '../../schema/validators/utils';
|
|
3
|
-
import { contentSizes, contentTextWidth, contentThemes, FileLinkProps, BlockBaseProps, } from '../../schema/validators/common';
|
|
4
|
-
import { ImageObjectProps } from '../../components/Image/schema';
|
|
3
|
+
import { contentSizes, contentTextWidth, contentThemes, FileLinkProps, ImageObjectProps, BlockBaseProps, } from '../../schema/validators/common';
|
|
5
4
|
export const ContentLayoutBlock = {
|
|
6
5
|
'content-layout-block': {
|
|
7
6
|
additionalProperties: false,
|
|
@@ -9,7 +9,6 @@ unpredictable css rules order in build */
|
|
|
9
9
|
margin: 16px 0;
|
|
10
10
|
}
|
|
11
11
|
.pc-header-block_full-width {
|
|
12
|
-
--pc-border-radius: 0;
|
|
13
12
|
padding: 16px 0;
|
|
14
13
|
margin: 0 0 16px;
|
|
15
14
|
}
|
|
@@ -87,10 +86,11 @@ unpredictable css rules order in build */
|
|
|
87
86
|
.pc-header-block__buttons {
|
|
88
87
|
margin-top: 16px;
|
|
89
88
|
}
|
|
90
|
-
.pc-header-block__button {
|
|
89
|
+
.pc-header-block__button.pc-header-block__button {
|
|
91
90
|
margin-top: 16px;
|
|
92
91
|
margin-right: 16px;
|
|
93
92
|
}
|
|
93
|
+
|
|
94
94
|
.pc-header-block__media {
|
|
95
95
|
position: absolute;
|
|
96
96
|
display: none;
|
|
@@ -150,7 +150,11 @@ unpredictable css rules order in build */
|
|
|
150
150
|
width: 100%;
|
|
151
151
|
object-fit: cover;
|
|
152
152
|
}
|
|
153
|
+
.pc-header-block__background_full-width-media {
|
|
154
|
+
--pc-border-radius: 0;
|
|
155
|
+
}
|
|
153
156
|
.pc-header-block__background_full-width {
|
|
157
|
+
--pc-border-radius: 0;
|
|
154
158
|
left: 0;
|
|
155
159
|
transform: none;
|
|
156
160
|
max-width: none;
|
|
@@ -186,6 +190,9 @@ unpredictable css rules order in build */
|
|
|
186
190
|
.pc-header-block_has-media .pc-header-block__content {
|
|
187
191
|
padding-top: 48px;
|
|
188
192
|
}
|
|
193
|
+
.pc-header-block_has-background .pc-header-block__background-img {
|
|
194
|
+
display: none;
|
|
195
|
+
}
|
|
189
196
|
.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 {
|
|
190
197
|
padding: calc(96px - 16px) 0;
|
|
191
198
|
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
import { block, getThemedValue } from '../../utils';
|
|
3
|
-
import {
|
|
3
|
+
import { headerHasMediaBackground } from '../../models/guards';
|
|
4
|
+
import { Button, Media, BackgroundMedia, BackgroundImage, RouterLink, HTML } from '../../components';
|
|
4
5
|
import { Grid, Row, Col } from '../../grid';
|
|
5
6
|
import { getImageSize, getTitleSizes, titleWithImageSizes } from './utils';
|
|
6
7
|
import YFMWrapper from '../../components/YFMWrapper/YFMWrapper';
|
|
7
8
|
import HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs/HeaderBreadcrumbs';
|
|
8
9
|
import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
|
|
9
|
-
import { getMediaImage } from '../../components/Media/Image/utils';
|
|
10
10
|
import './Header.css';
|
|
11
11
|
const b = block('header-block');
|
|
12
12
|
const Background = ({ background }) => {
|
|
13
|
-
const { url,
|
|
14
|
-
|
|
15
|
-
return (React.createElement(BackgroundMedia, Object.assign({}, background, { image: imageObject, animated: false, parallax: false, mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) })));
|
|
13
|
+
const { url, color, disableCompress, fullWidth, fullWidthMedia } = background;
|
|
14
|
+
return headerHasMediaBackground(background) ? (React.createElement(BackgroundMedia, Object.assign({}, background, { mediaClassName: b('background-media'), className: b('background', { media: true, 'full-width-media': fullWidthMedia }) }))) : (React.createElement(BackgroundImage, { src: url, className: b('background', { 'full-width-media': fullWidthMedia }), imageClassName: b('background-img'), style: { backgroundColor: fullWidth ? 'none' : color }, disableCompress: disableCompress }));
|
|
16
15
|
};
|
|
17
16
|
const FullWidthBackground = ({ background }) => (React.createElement("div", { className: b('background', { ['full-width']: true }), style: { backgroundColor: background === null || background === void 0 ? void 0 : background.color } }));
|
|
18
17
|
export const HeaderBlock = (props) => {
|
|
@@ -28,8 +27,12 @@ export const HeaderBlock = (props) => {
|
|
|
28
27
|
const backgroundThemed = background && getThemedValue(background, theme);
|
|
29
28
|
const imageThemed = image && getThemedValue(image, theme);
|
|
30
29
|
const videoThemed = video && getThemedValue(video, theme);
|
|
31
|
-
const fullWidth = backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.fullWidth;
|
|
32
|
-
return (React.createElement("header", { className: b({
|
|
30
|
+
const fullWidth = Boolean(backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.fullWidth);
|
|
31
|
+
return (React.createElement("header", { className: b({
|
|
32
|
+
['has-media']: hasMedia,
|
|
33
|
+
['has-background']: Boolean(background),
|
|
34
|
+
['full-width']: fullWidth,
|
|
35
|
+
}, className) },
|
|
33
36
|
backgroundThemed && fullWidth && React.createElement(FullWidthBackground, { background: backgroundThemed }),
|
|
34
37
|
backgroundThemed && React.createElement(Background, { background: backgroundThemed }),
|
|
35
38
|
React.createElement(Grid, { containerClass: b('container-fluid') },
|