@gravity-ui/page-constructor 2.20.1 → 2.22.0-alpha
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 +0 -46
- package/README.md +1 -1
- package/build/cjs/blocks/Header/schema.d.ts +18 -0
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +6 -0
- package/build/cjs/blocks/Media/schema.d.ts +12 -0
- package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +6 -0
- package/build/cjs/blocks/Security/schema.d.ts +6 -0
- package/build/cjs/blocks/Tabs/schema.d.ts +6 -0
- package/build/cjs/components/Anchor/Anchor.d.ts +2 -2
- package/build/cjs/components/Anchor/Anchor.js +1 -1
- package/build/cjs/components/Anchor/__tests__/Anchor.test.js +21 -0
- package/build/cjs/components/AnimateBlock/__tests__/AnimateBlock.test.js +36 -0
- package/build/cjs/components/Author/__tests__/Author.test.d.ts +1 -0
- package/build/cjs/components/Author/__tests__/Author.test.js +49 -0
- package/build/cjs/components/BackLink/__tests__/BackLink.test.d.ts +1 -0
- package/build/cjs/components/BackLink/__tests__/BackLink.test.js +63 -0
- package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/cjs/components/BlockBase/BlockBase.d.ts +2 -3
- package/build/cjs/components/BlockBase/BlockBase.js +2 -4
- package/build/cjs/components/BlockBase/__tests__/BlockBase.test.d.ts +1 -0
- package/build/cjs/components/BlockBase/__tests__/BlockBase.test.js +44 -0
- package/build/cjs/components/Button/Button.css +0 -3
- package/build/cjs/components/Button/Button.js +4 -5
- package/build/cjs/components/Button/__tests__/Button.test.d.ts +1 -0
- package/build/cjs/components/Button/__tests__/Button.test.js +91 -0
- package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +1 -0
- package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.js +58 -0
- package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +2 -2
- package/build/cjs/components/FullscreenImage/FullscreenImage.js +5 -5
- package/build/cjs/components/FullscreenMedia/FullscreenMedia.d.ts +13 -0
- package/build/cjs/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +3 -3
- package/build/cjs/components/Image/Image.d.ts +0 -1
- package/build/cjs/components/Image/Image.js +2 -2
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.js +10 -0
- package/build/cjs/components/Media/Image/Image.d.ts +1 -0
- package/build/cjs/components/Media/Image/Image.js +10 -3
- package/build/cjs/components/Media/Media.js +25 -4
- package/build/cjs/components/Media/Video/Video.d.ts +1 -1
- package/build/cjs/components/VideoBlock/VideoBlock.d.ts +4 -0
- package/build/cjs/components/VideoBlock/VideoBlock.js +3 -3
- package/build/cjs/components/index.d.ts +1 -1
- package/build/cjs/components/index.js +2 -2
- package/build/cjs/constructor-items.d.ts +1 -1
- package/build/cjs/containers/Loadable/Loadable.d.ts +2 -2
- package/build/cjs/containers/PageConstructor/PageConstructor.js +3 -5
- package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +2 -3
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/cjs/context/innerContext/InnerContext.d.ts +1 -2
- package/build/cjs/grid/Col/Col.d.ts +1 -1
- package/build/cjs/internal-typings/global.d.ts +16 -18
- package/build/cjs/models/constructor-items/blocks.d.ts +11 -1
- package/build/cjs/models/constructor-items/blocks.js +2 -0
- package/build/cjs/models/constructor-items/common.d.ts +7 -3
- package/build/cjs/models/constructor-items/sub-blocks.d.ts +4 -0
- package/build/cjs/models/constructor.d.ts +1 -4
- package/build/cjs/models/index.d.ts +0 -1
- package/build/cjs/models/index.js +0 -1
- package/build/cjs/schema/validators/common.d.ts +6 -0
- package/build/cjs/schema/validators/common.js +6 -0
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -2
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js +2 -5
- package/build/cjs/sub-blocks/HubspotForm/index.d.ts +1 -1
- package/build/cjs/sub-blocks/HubspotForm/index.js +5 -6
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.js +4 -4
- package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +9 -0
- package/build/cjs/sub-blocks/LayoutItem/schema.js +2 -0
- package/build/cjs/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/cjs/sub-blocks/LayoutItem/utils.js +5 -5
- package/build/cjs/sub-blocks/MediaCard/schema.d.ts +6 -0
- package/build/cjs/utils/blocks.d.ts +1 -4
- package/build/cjs/utils/blocks.js +1 -11
- package/build/esm/blocks/Header/schema.d.ts +18 -0
- package/build/esm/blocks/HeaderSlider/schema.d.ts +6 -0
- package/build/esm/blocks/Media/schema.d.ts +12 -0
- package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +6 -0
- package/build/esm/blocks/Security/schema.d.ts +6 -0
- package/build/esm/blocks/Tabs/Tabs.js +2 -2
- package/build/esm/blocks/Tabs/schema.d.ts +6 -0
- package/build/esm/components/Anchor/Anchor.d.ts +2 -2
- package/build/esm/components/Anchor/Anchor.js +1 -1
- package/build/esm/components/Anchor/__tests__/Anchor.test.d.ts +1 -0
- package/build/esm/components/Anchor/__tests__/Anchor.test.js +18 -0
- package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts +1 -0
- package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.js +33 -0
- package/build/esm/components/Author/__tests__/Author.test.d.ts +1 -0
- package/build/esm/components/Author/__tests__/Author.test.js +46 -0
- package/build/esm/components/BackLink/__tests__/BackLink.test.d.ts +1 -0
- package/build/esm/components/BackLink/__tests__/BackLink.test.js +60 -0
- package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/esm/components/BlockBase/BlockBase.d.ts +2 -3
- package/build/esm/components/BlockBase/BlockBase.js +2 -4
- package/build/esm/components/BlockBase/__tests__/BlockBase.test.d.ts +1 -0
- package/build/esm/components/BlockBase/__tests__/BlockBase.test.js +41 -0
- package/build/esm/components/Button/Button.css +0 -3
- package/build/esm/components/Button/Button.js +4 -5
- package/build/esm/components/Button/__tests__/Button.test.d.ts +1 -0
- package/build/esm/components/Button/__tests__/Button.test.js +88 -0
- package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +1 -0
- package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.js +55 -0
- package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +3 -3
- package/build/esm/components/FullscreenImage/FullscreenImage.js +6 -6
- package/build/esm/components/FullscreenMedia/FullscreenMedia.d.ts +14 -0
- package/build/esm/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +4 -4
- package/build/esm/components/Image/Image.d.ts +0 -1
- package/build/esm/components/Image/Image.js +2 -2
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.js +7 -0
- package/build/esm/components/Media/Image/Image.d.ts +1 -0
- package/build/esm/components/Media/Image/Image.js +12 -5
- package/build/esm/components/Media/Media.js +25 -4
- package/build/esm/components/Media/Video/Video.d.ts +1 -1
- package/build/esm/components/VideoBlock/VideoBlock.d.ts +4 -0
- package/build/esm/components/VideoBlock/VideoBlock.js +3 -3
- package/build/esm/components/index.d.ts +1 -1
- package/build/esm/components/index.js +1 -1
- package/build/esm/constructor-items.d.ts +1 -1
- package/build/esm/containers/Loadable/Loadable.d.ts +2 -2
- package/build/esm/containers/PageConstructor/PageConstructor.js +4 -6
- package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +2 -3
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/esm/context/innerContext/InnerContext.d.ts +1 -2
- package/build/esm/grid/Col/Col.d.ts +1 -1
- package/build/esm/internal-typings/global.d.ts +16 -18
- package/build/esm/models/constructor-items/blocks.d.ts +11 -1
- package/build/esm/models/constructor-items/blocks.js +2 -0
- package/build/esm/models/constructor-items/common.d.ts +7 -3
- package/build/esm/models/constructor-items/sub-blocks.d.ts +4 -0
- package/build/esm/models/constructor.d.ts +1 -4
- package/build/esm/models/index.d.ts +0 -1
- package/build/esm/models/index.js +0 -1
- package/build/esm/schema/validators/common.d.ts +6 -0
- package/build/esm/schema/validators/common.js +6 -0
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -2
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js +3 -6
- package/build/esm/sub-blocks/HubspotForm/index.d.ts +1 -1
- package/build/esm/sub-blocks/HubspotForm/index.js +6 -7
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.js +5 -5
- package/build/esm/sub-blocks/LayoutItem/schema.d.ts +9 -0
- package/build/esm/sub-blocks/LayoutItem/schema.js +2 -0
- package/build/esm/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/esm/sub-blocks/LayoutItem/utils.js +2 -2
- package/build/esm/sub-blocks/MediaCard/schema.d.ts +6 -0
- package/build/esm/utils/blocks.d.ts +1 -4
- package/build/esm/utils/blocks.js +0 -7
- package/package.json +6 -4
- package/server/models/constructor-items/blocks.d.ts +11 -1
- package/server/models/constructor-items/blocks.js +2 -0
- package/server/models/constructor-items/common.d.ts +7 -3
- package/server/models/constructor-items/sub-blocks.d.ts +4 -0
- package/server/models/constructor.d.ts +1 -4
- package/server/models/index.d.ts +0 -1
- package/server/models/index.js +0 -1
- package/server/utils/blocks.d.ts +1 -4
- package/server/utils/blocks.js +1 -11
- package/build/cjs/components/FullscreenMedia/FullScreenMedia.d.ts +0 -9
- package/build/cjs/customization/BlockDecoration.d.ts +0 -3
- package/build/cjs/customization/BlockDecoration.js +0 -22
- package/build/cjs/editor/Components/AddBlock/AddBlock.css +0 -82
- package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +0 -7
- package/build/cjs/editor/Components/AddBlock/AddBlock.js +0 -43
- package/build/cjs/editor/Components/EditBlock/EditBlock.css +0 -47
- package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +0 -4
- package/build/cjs/editor/Components/EditBlock/EditBlock.js +0 -32
- package/build/cjs/editor/Containers/Editor.d.ts +0 -2
- package/build/cjs/editor/Containers/Editor.js +0 -24
- package/build/cjs/editor/data/index.d.ts +0 -13
- package/build/cjs/editor/data/index.js +0 -27
- package/build/cjs/editor/data/previews/default-preview.d.ts +0 -3
- package/build/cjs/editor/data/previews/default-preview.js +0 -18
- package/build/cjs/editor/data/previews/header-block.d.ts +0 -3
- package/build/cjs/editor/data/previews/header-block.js +0 -19
- package/build/cjs/editor/index.d.ts +0 -2
- package/build/cjs/editor/index.js +0 -7
- package/build/cjs/editor/store/index.d.ts +0 -15
- package/build/cjs/editor/store/index.js +0 -32
- package/build/cjs/editor/store/reducer.d.ts +0 -41
- package/build/cjs/editor/store/reducer.js +0 -59
- package/build/cjs/editor/store/utils.d.ts +0 -13
- package/build/cjs/editor/store/utils.js +0 -34
- package/build/cjs/editor/styles/mixins.css +0 -0
- package/build/cjs/editor/styles/variables.css +0 -0
- package/build/cjs/editor/types/index.d.ts +0 -17
- package/build/cjs/editor/types/index.js +0 -2
- package/build/cjs/editor/utils/index.d.ts +0 -11
- package/build/cjs/editor/utils/index.js +0 -12
- package/build/cjs/models/customization.d.ts +0 -9
- package/build/cjs/models/customization.js +0 -2
- package/build/esm/components/FullscreenMedia/FullScreenMedia.d.ts +0 -10
- package/build/esm/customization/BlockDecoration.d.ts +0 -3
- package/build/esm/customization/BlockDecoration.js +0 -17
- package/build/esm/editor/Components/AddBlock/AddBlock.css +0 -82
- package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +0 -8
- package/build/esm/editor/Components/AddBlock/AddBlock.js +0 -41
- package/build/esm/editor/Components/EditBlock/EditBlock.css +0 -47
- package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +0 -5
- package/build/esm/editor/Components/EditBlock/EditBlock.js +0 -30
- package/build/esm/editor/Containers/Editor.d.ts +0 -2
- package/build/esm/editor/Containers/Editor.js +0 -20
- package/build/esm/editor/data/index.d.ts +0 -13
- package/build/esm/editor/data/index.js +0 -24
- package/build/esm/editor/data/previews/default-preview.d.ts +0 -3
- package/build/esm/editor/data/previews/default-preview.js +0 -15
- package/build/esm/editor/data/previews/header-block.d.ts +0 -3
- package/build/esm/editor/data/previews/header-block.js +0 -16
- package/build/esm/editor/index.d.ts +0 -2
- package/build/esm/editor/index.js +0 -2
- package/build/esm/editor/store/index.d.ts +0 -15
- package/build/esm/editor/store/index.js +0 -28
- package/build/esm/editor/store/reducer.d.ts +0 -41
- package/build/esm/editor/store/reducer.js +0 -55
- package/build/esm/editor/store/utils.d.ts +0 -13
- package/build/esm/editor/store/utils.js +0 -26
- package/build/esm/editor/styles/mixins.css +0 -0
- package/build/esm/editor/styles/variables.css +0 -0
- package/build/esm/editor/types/index.d.ts +0 -17
- package/build/esm/editor/utils/index.d.ts +0 -11
- package/build/esm/editor/utils/index.js +0 -6
- package/build/esm/models/customization.d.ts +0 -9
- package/server/models/customization.d.ts +0 -9
- package/server/models/customization.js +0 -2
- /package/build/{esm/editor/types/index.js → cjs/components/Anchor/__tests__/Anchor.test.d.ts} +0 -0
- /package/build/{esm/models/customization.js → cjs/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts} +0 -0
- /package/build/cjs/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +0 -0
- /package/build/cjs/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
- /package/build/esm/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +0 -0
- /package/build/esm/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const user_event_1 = tslib_1.__importDefault(require("@testing-library/user-event"));
|
|
7
|
+
const ButtonTabs_1 = tslib_1.__importDefault(require("../ButtonTabs"));
|
|
8
|
+
const qaId = 'button-tabs-component';
|
|
9
|
+
const items = [
|
|
10
|
+
{
|
|
11
|
+
id: '0',
|
|
12
|
+
title: 'tab-1',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: '1',
|
|
16
|
+
title: 'tab-2',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: '2',
|
|
20
|
+
title: 'tab-3',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
describe('ButtonTabs', () => {
|
|
24
|
+
test('render ButtonTabs by default', async () => {
|
|
25
|
+
(0, react_2.render)(react_1.default.createElement(ButtonTabs_1.default, { items: items, qa: qaId }));
|
|
26
|
+
const buttonTabs = react_2.screen.getByTestId(qaId);
|
|
27
|
+
expect(buttonTabs).toBeInTheDocument();
|
|
28
|
+
expect(buttonTabs).toBeVisible();
|
|
29
|
+
expect(buttonTabs).not.toBeDisabled();
|
|
30
|
+
});
|
|
31
|
+
test('has active tab', async () => {
|
|
32
|
+
const activeTabId = 1;
|
|
33
|
+
(0, react_2.render)(react_1.default.createElement(ButtonTabs_1.default, { items: items, qa: qaId, activeTab: String(activeTabId) }));
|
|
34
|
+
const buttons = react_2.screen.getAllByRole('button');
|
|
35
|
+
buttons.forEach((button, index) => {
|
|
36
|
+
if (index === activeTabId) {
|
|
37
|
+
expect(button).toHaveClass('pc-button-tabs__item_active');
|
|
38
|
+
}
|
|
39
|
+
expect(button).toHaveClass('pc-button-block_theme_normal');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
test('add className', () => {
|
|
43
|
+
const className = 'my-class';
|
|
44
|
+
(0, react_2.render)(react_1.default.createElement(ButtonTabs_1.default, { items: items, qa: qaId, className: className }));
|
|
45
|
+
const buttonTabs = react_2.screen.getByTestId(qaId);
|
|
46
|
+
expect(buttonTabs).toHaveClass(className);
|
|
47
|
+
});
|
|
48
|
+
test('call onSelectTab', async () => {
|
|
49
|
+
const user = user_event_1.default.setup();
|
|
50
|
+
const handleOnClick = jest.fn();
|
|
51
|
+
(0, react_2.render)(react_1.default.createElement(ButtonTabs_1.default, { items: items, qa: qaId, onSelectTab: handleOnClick }));
|
|
52
|
+
const buttons = react_2.screen.getAllByRole('button');
|
|
53
|
+
buttons.forEach(async (button, i) => {
|
|
54
|
+
await user.click(button);
|
|
55
|
+
expect(handleOnClick).toHaveBeenCalledTimes(i + 1);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -5,5 +5,5 @@ export interface FullScreenImageProps extends ImageProps {
|
|
|
5
5
|
modalImageClass?: string;
|
|
6
6
|
imageStyle?: CSSProperties;
|
|
7
7
|
}
|
|
8
|
-
declare const
|
|
9
|
-
export default
|
|
8
|
+
declare const FullscreenImage: (props: FullScreenImageProps) => JSX.Element;
|
|
9
|
+
export default FullscreenImage;
|
|
@@ -10,16 +10,16 @@ const i18n_1 = tslib_1.__importDefault(require("./i18n"));
|
|
|
10
10
|
const b = (0, utils_1.block)('FullScreenImage');
|
|
11
11
|
const FULL_SCREEN_ICON_SIZE = 18;
|
|
12
12
|
const CLOSE_ICON_SIZE = 30;
|
|
13
|
-
const
|
|
13
|
+
const FullscreenImage = (props) => {
|
|
14
14
|
const { imageClassName, modalImageClass, imageStyle, alt = (0, i18n_1.default)('img-alt') } = props;
|
|
15
15
|
const [isOpened, setIsOpened] = (0, react_1.useState)(false);
|
|
16
16
|
const [isMouseEnter, setIsMouseEnter] = (0, react_1.useState)(false);
|
|
17
17
|
const openModal = () => setIsOpened(true);
|
|
18
18
|
const closeModal = () => setIsOpened(false);
|
|
19
|
-
const
|
|
20
|
-
const
|
|
19
|
+
const showFullscreenIcon = () => setIsMouseEnter(true);
|
|
20
|
+
const hideFullscreenIcon = () => setIsMouseEnter(false);
|
|
21
21
|
return (react_1.default.createElement("div", { className: b() },
|
|
22
|
-
react_1.default.createElement("div", { className: b('image-wrapper'), onMouseEnter:
|
|
22
|
+
react_1.default.createElement("div", { className: b('image-wrapper'), onMouseEnter: showFullscreenIcon, onMouseLeave: hideFullscreenIcon },
|
|
23
23
|
react_1.default.createElement(Image_1.default, Object.assign({}, props, { alt: alt, className: b('image', imageClassName), onClick: openModal, style: imageStyle })),
|
|
24
24
|
react_1.default.createElement("div", { className: b('icon-wrapper', { visible: isMouseEnter }), onClick: openModal },
|
|
25
25
|
react_1.default.createElement(uikit_1.Icon, { data: icons_1.FullScreen, width: FULL_SCREEN_ICON_SIZE, height: FULL_SCREEN_ICON_SIZE, className: b('icon') }))),
|
|
@@ -29,4 +29,4 @@ const FullScreenImage = (props) => {
|
|
|
29
29
|
react_1.default.createElement(uikit_1.Icon, { data: icons_1.PreviewClose, width: CLOSE_ICON_SIZE, height: CLOSE_ICON_SIZE, className: b('icon', { hover: true }) })),
|
|
30
30
|
react_1.default.createElement(Image_1.default, Object.assign({}, props, { className: b('modal-image', modalImageClass) })))))));
|
|
31
31
|
};
|
|
32
|
-
exports.default =
|
|
32
|
+
exports.default = FullscreenImage;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { MediaAllProps } from '../Media/Media';
|
|
3
|
+
export type ChildMediaRenderProps = Pick<MediaAllProps, 'fullScreen' | 'fullscreen' | 'imageClassName' | 'videoClassName' | 'youtubeClassName' | 'className'>;
|
|
4
|
+
export interface FullScreenMediaProps {
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated use showFullscreenIcon
|
|
7
|
+
*/
|
|
8
|
+
showFullScreenIcon?: boolean;
|
|
9
|
+
showFullscreenIcon?: boolean;
|
|
10
|
+
children: (props?: ChildMediaRenderProps) => JSX.Element;
|
|
11
|
+
}
|
|
12
|
+
declare const FullscreenMedia: ({ children, showFullScreenIcon, showFullscreenIcon, }: FullScreenMediaProps) => JSX.Element;
|
|
13
|
+
export default FullscreenMedia;
|
|
@@ -10,7 +10,7 @@ const b = (0, utils_1.block)('full-screen-media');
|
|
|
10
10
|
const FULL_SCREEN_ICON_SIZE = 18;
|
|
11
11
|
const CLOSE_ICON_SIZE = 30;
|
|
12
12
|
const getMediaClass = (type) => b('modal-media', { type });
|
|
13
|
-
const
|
|
13
|
+
const FullscreenMedia = ({ children, showFullScreenIcon = true, showFullscreenIcon = true, }) => {
|
|
14
14
|
const [isOpened, setIsOpened] = (0, react_1.useState)(false);
|
|
15
15
|
const isMobile = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
16
16
|
const openModal = (e) => {
|
|
@@ -24,7 +24,7 @@ const FullScreenMedia = ({ children, showFullScreenIcon = true }) => {
|
|
|
24
24
|
return (react_1.default.createElement("div", { className: b() },
|
|
25
25
|
react_1.default.createElement("div", { className: b('media-wrapper'), onClickCapture: openModal },
|
|
26
26
|
children({ className: b('inline-media') }),
|
|
27
|
-
showFullScreenIcon && (react_1.default.createElement("div", { className: b('icon-wrapper'), onClickCapture: openModal },
|
|
27
|
+
showFullScreenIcon && showFullscreenIcon && (react_1.default.createElement("div", { className: b('icon-wrapper'), onClickCapture: openModal },
|
|
28
28
|
react_1.default.createElement(uikit_1.Icon, { data: icons_1.FullScreen, width: FULL_SCREEN_ICON_SIZE, height: FULL_SCREEN_ICON_SIZE, className: b('icon') })))),
|
|
29
29
|
isOpened && (react_1.default.createElement(uikit_1.Modal, { open: isOpened, onClose: closeModal, className: b('modal') },
|
|
30
30
|
react_1.default.createElement("div", { className: b('modal-content') },
|
|
@@ -37,4 +37,4 @@ const FullScreenMedia = ({ children, showFullScreenIcon = true }) => {
|
|
|
37
37
|
fullScreen: true,
|
|
38
38
|
}))))));
|
|
39
39
|
};
|
|
40
|
-
exports.default =
|
|
40
|
+
exports.default = FullscreenMedia;
|
|
@@ -5,7 +5,6 @@ export interface ImageProps extends Partial<ImageObjectProps>, Partial<ImageDevi
|
|
|
5
5
|
className?: string;
|
|
6
6
|
onClick?: MouseEventHandler;
|
|
7
7
|
containerClassName?: string;
|
|
8
|
-
qa?: string;
|
|
9
8
|
}
|
|
10
9
|
declare const Image: (props: ImageProps) => JSX.Element | null;
|
|
11
10
|
export default Image;
|
|
@@ -12,7 +12,7 @@ const checkWebP = (src) => {
|
|
|
12
12
|
};
|
|
13
13
|
const Image = (props) => {
|
|
14
14
|
const projectSettings = (0, react_1.useContext)(projectSettingsContext_1.ProjectSettingsContext);
|
|
15
|
-
const { src: imageSrc, alt = (0, i18n_1.default)('img-alt'), disableCompress, tablet, desktop, mobile, style, className, onClick, containerClassName,
|
|
15
|
+
const { src: imageSrc, alt = (0, i18n_1.default)('img-alt'), disableCompress, tablet, desktop, mobile, style, className, onClick, containerClassName, } = props;
|
|
16
16
|
const [imgLoadingError, setImgLoadingError] = (0, react_1.useState)(false);
|
|
17
17
|
const src = imageSrc || desktop;
|
|
18
18
|
if (!src) {
|
|
@@ -22,7 +22,7 @@ const Image = (props) => {
|
|
|
22
22
|
disableCompress ||
|
|
23
23
|
!(0, imageCompress_1.isCompressible)(src) ||
|
|
24
24
|
imgLoadingError;
|
|
25
|
-
return (react_1.default.createElement("picture", { className: containerClassName
|
|
25
|
+
return (react_1.default.createElement("picture", { className: containerClassName },
|
|
26
26
|
mobile && (react_1.default.createElement(react_1.Fragment, null,
|
|
27
27
|
!disableWebp && (react_1.default.createElement("source", { srcSet: checkWebP(mobile), type: "image/webp", media: `(max-width: ${constants_1.BREAKPOINTS.sm}px)` })),
|
|
28
28
|
react_1.default.createElement("source", { srcSet: mobile, media: `(max-width: ${constants_1.BREAKPOINTS.sm}px)` }))),
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const FullscreenMedia_1 = tslib_1.__importDefault(require("../../FullscreenMedia/FullscreenMedia"));
|
|
6
|
+
const Video_1 = tslib_1.__importDefault(require("../Video/Video"));
|
|
7
|
+
const FullscreenVideo = (props) => {
|
|
8
|
+
return (react_1.default.createElement(FullscreenMedia_1.default, null, (classNames) => react_1.default.createElement(Video_1.default, Object.assign({}, props, classNames))));
|
|
9
|
+
};
|
|
10
|
+
exports.default = FullscreenVideo;
|
|
@@ -13,7 +13,7 @@ const Image_1 = tslib_1.__importDefault(require("../../Image/Image"));
|
|
|
13
13
|
const utils_2 = require("./utils");
|
|
14
14
|
const b = (0, utils_1.block)('media-component-image');
|
|
15
15
|
const Image = (props) => {
|
|
16
|
-
const { parallax, image, height, imageClassName, isBackground, hasVideoFallback, video } = props;
|
|
16
|
+
const { parallax, image, height, imageClassName, isBackground, hasVideoFallback, video, fullscreen, } = props;
|
|
17
17
|
const [scrollY, setScrollY] = (0, react_1.useState)(0);
|
|
18
18
|
const [{ springScrollY }, springSetScrollY] = (0, react_spring_1.useSpring)(() => ({
|
|
19
19
|
springScrollY: 0,
|
|
@@ -34,10 +34,10 @@ const Image = (props) => {
|
|
|
34
34
|
parallaxInterpolate = springScrollY.interpolate((value) => `translateY(-${Number(value) / parallaxLevel}px)`);
|
|
35
35
|
}
|
|
36
36
|
const imageClass = b('item', { withVideo: Boolean(video) && !hasVideoFallback }, imageClassName);
|
|
37
|
-
const
|
|
37
|
+
const fullscreenImage = (item) => {
|
|
38
38
|
const itemData = (0, utils_2.getMediaImage)(item);
|
|
39
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_2.getMediaImage)(oneImage);
|
|
43
43
|
return (react_1.default.createElement(react_spring_1.animated.div, { style: { transform: parallaxInterpolate } },
|
|
@@ -47,9 +47,16 @@ const Image = (props) => {
|
|
|
47
47
|
const imageData = (0, utils_2.getMediaImage)(oneImage);
|
|
48
48
|
return react_1.default.createElement(Image_1.default, Object.assign({}, imageData, { className: imageClass, style: { height } }));
|
|
49
49
|
};
|
|
50
|
+
const imageSlider = (imageArray) => {
|
|
51
|
+
const fullscreenItem = fullscreen === undefined || fullscreen;
|
|
52
|
+
return (react_1.default.createElement(Slider_1.default, { slidesToShow: 1, type: models_1.SliderType.MediaCard }, imageArray.map((item) => fullscreenItem ? fullscreenImage(item) : imageOnly(item))));
|
|
53
|
+
};
|
|
50
54
|
if (Array.isArray(image)) {
|
|
51
55
|
return imageSlider(image);
|
|
52
56
|
}
|
|
57
|
+
if (fullscreen) {
|
|
58
|
+
return fullscreenImage(image);
|
|
59
|
+
}
|
|
53
60
|
return isBackground ? imageBackground(image) : imageOnly(image);
|
|
54
61
|
};
|
|
55
62
|
exports.default = Image;
|
|
@@ -6,23 +6,43 @@ const react_1 = tslib_1.__importStar(require("react"));
|
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
7
|
const VideoBlock_1 = tslib_1.__importDefault(require("../VideoBlock/VideoBlock"));
|
|
8
8
|
const DataLens_1 = tslib_1.__importDefault(require("./DataLens/DataLens"));
|
|
9
|
+
const FullscreenVideo_1 = tslib_1.__importDefault(require("./FullscreenVideo/FullscreenVideo"));
|
|
9
10
|
const Image_1 = tslib_1.__importDefault(require("./Image/Image"));
|
|
10
11
|
const Video_1 = tslib_1.__importDefault(require("./Video/Video"));
|
|
11
12
|
const b = (0, utils_1.block)('Media');
|
|
12
13
|
const Media = (props) => {
|
|
13
|
-
const { image, video, youtube, dataLens, color, height, previewImg, parallax = false, metrika, fullScreen, analyticsEvents, } = props;
|
|
14
|
+
const { image, video, youtube, dataLens, color, height, previewImg, parallax = false, metrika, fullScreen, fullscreen, analyticsEvents, } = props;
|
|
14
15
|
const { className, imageClassName, videoClassName, youtubeClassName, playVideo = true, isBackground, playButton, customBarControlsClassName, } = props;
|
|
15
16
|
const [hasVideoFallback, setHasVideoFallback] = (0, react_1.useState)(false);
|
|
16
17
|
const content = (0, react_1.useMemo)(() => {
|
|
17
18
|
let result = [];
|
|
18
19
|
if (image) {
|
|
19
|
-
result.push(react_1.default.createElement(Image_1.default, { key: "image", parallax: parallax, image: image, height: height, imageClassName: imageClassName, isBackground: isBackground, video: video, hasVideoFallback: hasVideoFallback }));
|
|
20
|
+
result.push(react_1.default.createElement(Image_1.default, { key: "image", parallax: parallax, image: image, height: height, imageClassName: imageClassName, isBackground: isBackground, video: video, hasVideoFallback: hasVideoFallback, fullscreen: fullScreen || fullscreen }));
|
|
20
21
|
}
|
|
21
22
|
if (video) {
|
|
22
|
-
|
|
23
|
+
const videoProps = {
|
|
24
|
+
key: 'video',
|
|
25
|
+
video,
|
|
26
|
+
videoClassName,
|
|
27
|
+
height,
|
|
28
|
+
metrika,
|
|
29
|
+
analyticsEvents,
|
|
30
|
+
playVideo,
|
|
31
|
+
previewImg,
|
|
32
|
+
playButton,
|
|
33
|
+
customBarControlsClassName,
|
|
34
|
+
hasVideoFallback,
|
|
35
|
+
setHasVideoFallback,
|
|
36
|
+
};
|
|
37
|
+
if (fullScreen || fullscreen) {
|
|
38
|
+
result.push(react_1.default.createElement(FullscreenVideo_1.default, Object.assign({}, videoProps)));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
result.push(react_1.default.createElement(Video_1.default, Object.assign({}, videoProps)));
|
|
42
|
+
}
|
|
23
43
|
}
|
|
24
44
|
if (youtube) {
|
|
25
|
-
result = (react_1.default.createElement(VideoBlock_1.default, { className: b('youtube', youtubeClassName), record: youtube, attributes: { color: 'white', rel: '0' }, previewImg: previewImg, height: height,
|
|
45
|
+
result = (react_1.default.createElement(VideoBlock_1.default, { className: b('youtube', youtubeClassName), record: youtube, attributes: { color: 'white', rel: '0' }, previewImg: previewImg, height: height, fullscreen: fullScreen || fullscreen }));
|
|
26
46
|
}
|
|
27
47
|
if (dataLens) {
|
|
28
48
|
result = react_1.default.createElement(DataLens_1.default, { dataLens: dataLens });
|
|
@@ -47,6 +67,7 @@ const Media = (props) => {
|
|
|
47
67
|
customBarControlsClassName,
|
|
48
68
|
youtubeClassName,
|
|
49
69
|
fullScreen,
|
|
70
|
+
fullscreen,
|
|
50
71
|
]);
|
|
51
72
|
return (react_1.default.createElement("div", { className: b(null, className), style: { backgroundColor: color } }, content));
|
|
52
73
|
};
|
|
@@ -10,6 +10,6 @@ interface InnerVideoProps {
|
|
|
10
10
|
setHasVideoFallback: React.Dispatch<boolean>;
|
|
11
11
|
hasVideoFallback: boolean;
|
|
12
12
|
}
|
|
13
|
-
type VideoAllProps = VideoAdditionProps & MediaComponentVideoProps & InnerVideoProps;
|
|
13
|
+
export type VideoAllProps = VideoAdditionProps & MediaComponentVideoProps & InnerVideoProps;
|
|
14
14
|
declare const Video: (props: VideoAllProps) => JSX.Element | null;
|
|
15
15
|
export default Video;
|
|
@@ -13,7 +13,11 @@ export interface VideoBlockProps {
|
|
|
13
13
|
previewImg?: string;
|
|
14
14
|
playButton?: React.ReactNode;
|
|
15
15
|
height?: number;
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated use fullscreen
|
|
18
|
+
*/
|
|
16
19
|
fullScreen?: boolean;
|
|
20
|
+
fullscreen?: boolean;
|
|
17
21
|
}
|
|
18
22
|
declare const VideoBlock: (props: VideoBlockProps) => JSX.Element | null;
|
|
19
23
|
export default VideoBlock;
|
|
@@ -39,7 +39,7 @@ function getHeight(width) {
|
|
|
39
39
|
}
|
|
40
40
|
exports.getHeight = getHeight;
|
|
41
41
|
const VideoBlock = (props) => {
|
|
42
|
-
const { stream, record, attributes, className, id, previewImg, playButton, height, fullScreen } = props;
|
|
42
|
+
const { stream, record, attributes, className, id, previewImg, playButton, height, fullScreen, fullscreen, } = props;
|
|
43
43
|
const src = getVideoSrc(stream, record);
|
|
44
44
|
const ref = (0, react_1.useRef)(null);
|
|
45
45
|
const iframeRef = (0, react_1.useRef)();
|
|
@@ -82,14 +82,14 @@ const VideoBlock = (props) => {
|
|
|
82
82
|
ref.current.appendChild(iframe);
|
|
83
83
|
iframeRef.current = iframe;
|
|
84
84
|
}
|
|
85
|
-
}, [stream, record, norender, src, fullId, attributes, iframeRef, fullScreen]);
|
|
85
|
+
}, [stream, record, norender, src, fullId, attributes, iframeRef, fullScreen, fullscreen]);
|
|
86
86
|
(0, react_1.useEffect)(() => {
|
|
87
87
|
setHidePreview(false);
|
|
88
88
|
}, [src, setHidePreview]);
|
|
89
89
|
if (norender) {
|
|
90
90
|
return null;
|
|
91
91
|
}
|
|
92
|
-
return (react_1.default.createElement("div", { className: b(null, className), ref: ref, style: { height: currentHeight } }, previewImg && !hidePreview && !fullScreen && (react_1.default.createElement("div", { className: b('preview'), onClick: onPreviewClick },
|
|
92
|
+
return (react_1.default.createElement("div", { className: b(null, className), ref: ref, style: { height: currentHeight } }, previewImg && !hidePreview && !fullScreen && !fullscreen && (react_1.default.createElement("div", { className: b('preview'), onClick: onPreviewClick },
|
|
93
93
|
react_1.default.createElement(Image_1.default, { src: previewImg, className: b('image'), containerClassName: b('image-wrapper') }),
|
|
94
94
|
playButton || (react_1.default.createElement("button", { className: b('button') },
|
|
95
95
|
react_1.default.createElement(uikit_1.Icon, { className: b('icon'), data: icons_1.PlayVideo, size: 24 })))))));
|
|
@@ -35,6 +35,6 @@ export { default as Author } from './Author/Author';
|
|
|
35
35
|
export { default as RouterLink } from './RouterLink/RouterLink';
|
|
36
36
|
export { default as HTML } from './HTML/HTML';
|
|
37
37
|
export { default as MetaInfo } from './MetaInfo/MetaInfo';
|
|
38
|
-
export { default as FullScreenMedia } from './FullscreenMedia/
|
|
38
|
+
export { default as FullScreenMedia } from './FullscreenMedia/FullscreenMedia';
|
|
39
39
|
export type { RouterLinkProps } from './RouterLink/RouterLink';
|
|
40
40
|
export type { ImageBaseProps } from './ImageBase/ImageBase';
|
|
@@ -78,5 +78,5 @@ var HTML_1 = require("./HTML/HTML");
|
|
|
78
78
|
Object.defineProperty(exports, "HTML", { enumerable: true, get: function () { return __importDefault(HTML_1).default; } });
|
|
79
79
|
var MetaInfo_1 = require("./MetaInfo/MetaInfo");
|
|
80
80
|
Object.defineProperty(exports, "MetaInfo", { enumerable: true, get: function () { return __importDefault(MetaInfo_1).default; } });
|
|
81
|
-
var
|
|
82
|
-
Object.defineProperty(exports, "FullScreenMedia", { enumerable: true, get: function () { return __importDefault(
|
|
81
|
+
var FullscreenMedia_1 = require("./FullscreenMedia/FullscreenMedia");
|
|
82
|
+
Object.defineProperty(exports, "FullScreenMedia", { enumerable: true, get: function () { return __importDefault(FullscreenMedia_1).default; } });
|
|
@@ -36,7 +36,7 @@ export declare const subBlockMap: {
|
|
|
36
36
|
"media-card": ({ border, ...mediaProps }: import("./models").MediaCardProps) => JSX.Element;
|
|
37
37
|
"banner-card": (props: import("./models").BannerCardProps) => JSX.Element;
|
|
38
38
|
"news-card": (props: import("./models").NewsCardProps) => JSX.Element;
|
|
39
|
-
"layout-item": ({ content: { links, ...content }, metaInfo, media, border, fullScreen, className, }: import("./models").LayoutItemProps) => JSX.Element;
|
|
39
|
+
"layout-item": ({ content: { links, ...content }, metaInfo, media, border, fullScreen, fullscreen, className, }: import("./models").LayoutItemProps) => JSX.Element;
|
|
40
40
|
/**
|
|
41
41
|
* @deprecated Use LayoutItem
|
|
42
42
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Block, CustomItem, FetchLoadableData, LoadableData, LoadableProps } from '../../models';
|
|
3
3
|
export interface LoadableState {
|
|
4
4
|
loading: boolean;
|
|
5
5
|
error: boolean;
|
|
@@ -8,7 +8,7 @@ export interface LoadableState {
|
|
|
8
8
|
export interface LoadableComponentsProps extends Omit<PropsWithChildren<LoadableProps>, 'source'> {
|
|
9
9
|
Component: CustomItem;
|
|
10
10
|
ChildComponent: CustomItem;
|
|
11
|
-
block:
|
|
11
|
+
block: Block;
|
|
12
12
|
blockKey: string;
|
|
13
13
|
fetch: FetchLoadableData;
|
|
14
14
|
}
|
|
@@ -28,15 +28,13 @@ const Constructor = (props) => {
|
|
|
28
28
|
itemMap: Object.assign(Object.assign(Object.assign({}, constructor_items_1.blockMap), constructor_items_1.subBlockMap), (0, utils_1.getCustomItems)(custom)),
|
|
29
29
|
loadables: custom === null || custom === void 0 ? void 0 : custom.loadable,
|
|
30
30
|
shouldRenderBlock,
|
|
31
|
-
customization: {
|
|
32
|
-
decorators: custom === null || custom === void 0 ? void 0 : custom.decorators,
|
|
33
|
-
},
|
|
34
31
|
},
|
|
35
32
|
}), [custom, shouldRenderBlock]);
|
|
36
33
|
const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
|
|
37
34
|
const hasFootnotes = footnotes.length > 0;
|
|
38
|
-
const
|
|
39
|
-
const
|
|
35
|
+
const isHeaderBlock = (block) => context.headerBlockTypes.includes(block.type);
|
|
36
|
+
const header = blocks === null || blocks === void 0 ? void 0 : blocks.find(isHeaderBlock);
|
|
37
|
+
const restBlocks = blocks === null || blocks === void 0 ? void 0 : blocks.filter((block) => !isHeaderBlock(block));
|
|
40
38
|
const themedBackground = (0, utils_1.getThemedValue)(background, theme);
|
|
41
39
|
return (react_1.default.createElement(innerContext_1.InnerContext.Provider, { value: context },
|
|
42
40
|
react_1.default.createElement("div", { className: b() },
|
package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.ConstructorBlocks = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
7
|
-
const blockIdContext_1 = require("../../../../context/blockIdContext");
|
|
8
7
|
const innerContext_1 = require("../../../../context/innerContext");
|
|
9
8
|
const utils_1 = require("../../../../utils");
|
|
10
9
|
const ConstructorBlock_1 = require("../ConstructorBlock/ConstructorBlock");
|
|
@@ -35,9 +34,9 @@ const ConstructorBlocks = ({ items }) => {
|
|
|
35
34
|
if ('children' in item && item.children) {
|
|
36
35
|
children = item.children.map(renderer.bind(null, blockId));
|
|
37
36
|
}
|
|
38
|
-
itemElement = (react_1.default.createElement(ConstructorItem_1.ConstructorItem, { data: item, blockKey: blockId }, children));
|
|
37
|
+
itemElement = (react_1.default.createElement(ConstructorItem_1.ConstructorItem, { data: item, key: blockId, blockKey: blockId }, children));
|
|
39
38
|
}
|
|
40
|
-
return
|
|
39
|
+
return blockTypes.includes(item.type) ? (react_1.default.createElement(ConstructorBlock_1.ConstructorBlock, { data: item, key: blockId }, itemElement)) : (itemElement);
|
|
41
40
|
};
|
|
42
41
|
return react_1.default.createElement(react_1.Fragment, null, items.map(renderer.bind(null, '')));
|
|
43
42
|
};
|
package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export interface ConstructorItemProps {
|
|
|
3
3
|
data: ConstructorItemType;
|
|
4
4
|
blockKey: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const ConstructorItem: ({ data, children }: WithChildren<ConstructorItemProps>) => JSX.Element;
|
|
6
|
+
export declare const ConstructorItem: ({ data, blockKey, children }: WithChildren<ConstructorItemProps>) => JSX.Element;
|
|
7
7
|
export declare const ConstructorHeader: ({ data, blockKey, }: Pick<ConstructorItemProps, 'data' | 'blockKey'>) => JSX.Element;
|
|
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ConstructorHeader = exports.ConstructorItem = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const blockIdContext_1 = require("../../../../context/blockIdContext");
|
|
6
7
|
const innerContext_1 = require("../../../../context/innerContext");
|
|
7
|
-
const
|
|
8
|
-
const ConstructorItem = ({ data, children }) => {
|
|
8
|
+
const ConstructorItem = ({ data, blockKey, children }) => {
|
|
9
9
|
const { itemMap } = (0, react_1.useContext)(innerContext_1.InnerContext);
|
|
10
10
|
const { type } = data, rest = tslib_1.__rest(data, ["type"]);
|
|
11
11
|
const Component = itemMap[type];
|
|
12
|
-
return react_1.default.createElement(
|
|
12
|
+
return (react_1.default.createElement(blockIdContext_1.BlockIdContext.Provider, { value: blockKey },
|
|
13
|
+
react_1.default.createElement(Component, Object.assign({}, rest), children)));
|
|
13
14
|
};
|
|
14
15
|
exports.ConstructorItem = ConstructorItem;
|
|
15
|
-
const ConstructorHeader = ({ data, blockKey, }) => (react_1.default.createElement(
|
|
16
|
-
react_1.default.createElement(exports.ConstructorItem, { data: data, key: data.type, blockKey: blockKey })));
|
|
16
|
+
const ConstructorHeader = ({ data, blockKey, }) => (react_1.default.createElement(exports.ConstructorItem, { data: data, key: data.type, blockKey: blockKey }));
|
|
17
17
|
exports.ConstructorHeader = ConstructorHeader;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ItemMap } from '../../containers/PageConstructor/PageConstructor';
|
|
3
|
-
import {
|
|
3
|
+
import { LoadableConfig, ShouldRenderBlock } from '../../models';
|
|
4
4
|
export interface InnerContextType {
|
|
5
5
|
blockTypes: string[];
|
|
6
6
|
subBlockTypes: string[];
|
|
@@ -8,6 +8,5 @@ export interface InnerContextType {
|
|
|
8
8
|
itemMap: ItemMap;
|
|
9
9
|
loadables?: LoadableConfig;
|
|
10
10
|
shouldRenderBlock?: ShouldRenderBlock;
|
|
11
|
-
customization?: Pick<CustomConfig, 'decorators'>;
|
|
12
11
|
}
|
|
13
12
|
export declare const InnerContext: React.Context<InnerContextType>;
|
|
@@ -7,4 +7,4 @@ export interface GridColumnProps extends GridColumnClassParams, Refable<HTMLDivE
|
|
|
7
7
|
dataQa?: string;
|
|
8
8
|
children?: React.ReactNode;
|
|
9
9
|
}
|
|
10
|
-
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "
|
|
10
|
+
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "dataQa" | "reset" | "visible" | "sizes" | "offsets" | "orders" | "hidden" | "alignSelf" | "justifyContent"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -10,17 +10,22 @@ declare module '*.svg' {
|
|
|
10
10
|
export default path;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
interface CreateFormProps {
|
|
14
|
+
portalId: string;
|
|
15
|
+
formId: string;
|
|
16
|
+
region?: string;
|
|
17
|
+
target?: string;
|
|
18
|
+
cssClass?: string;
|
|
19
|
+
formInstanceId?: string;
|
|
20
|
+
}
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
formInstanceId?: string;
|
|
23
|
-
}
|
|
22
|
+
interface Window {
|
|
23
|
+
hbspt?: {
|
|
24
|
+
forms: {
|
|
25
|
+
create: (args: CreateFormProps) => unknown;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
ymaps: Ymaps;
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
declare namespace Ymaps {
|
|
@@ -58,11 +63,4 @@ declare namespace Ymaps {
|
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
hbspt?: {
|
|
63
|
-
forms: {
|
|
64
|
-
create: (args: Hbspt.CreateFormProps) => unknown;
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
ymaps: Ymaps;
|
|
68
|
-
}
|
|
66
|
+
declare module '*.md';
|
|
@@ -8,6 +8,8 @@ export declare enum BlockType {
|
|
|
8
8
|
PromoFeaturesBlock = "promo-features-block",
|
|
9
9
|
ExtendedFeaturesBlock = "extended-features-block",
|
|
10
10
|
SliderBlock = "slider-block",
|
|
11
|
+
CalculatorBlock = "calculator-block",
|
|
12
|
+
ServiceDemoBlock = "service-demo-block",
|
|
11
13
|
QuestionsBlock = "questions-block",
|
|
12
14
|
BannerBlock = "banner-block",
|
|
13
15
|
CompaniesBlock = "companies-block",
|
|
@@ -50,6 +52,7 @@ export interface LoadableProps {
|
|
|
50
52
|
export interface LoadableChildren {
|
|
51
53
|
loadable?: LoadableProps;
|
|
52
54
|
}
|
|
55
|
+
export type ServiceDemoProps = Animatable;
|
|
53
56
|
export declare enum SliderBreakpointNames {
|
|
54
57
|
Sm = "sm",
|
|
55
58
|
Md = "md",
|
|
@@ -111,6 +114,7 @@ export interface HeaderBlockProps {
|
|
|
111
114
|
breadcrumbs?: HeaderBreadCrumbsProps;
|
|
112
115
|
status?: JSX.Element;
|
|
113
116
|
}
|
|
117
|
+
export type CalculatorProps = Animatable;
|
|
114
118
|
export interface SimpleBlockProps extends Animatable, Childable {
|
|
115
119
|
title: TitleBaseProps;
|
|
116
120
|
description: string;
|
|
@@ -313,9 +317,15 @@ export interface ShareBlockProps {
|
|
|
313
317
|
export type HeaderBlockModel = {
|
|
314
318
|
type: BlockType.HeaderBlock;
|
|
315
319
|
} & HeaderBlockProps;
|
|
320
|
+
export type CalculatorBlockModel = {
|
|
321
|
+
type: BlockType.CalculatorBlock;
|
|
322
|
+
} & CalculatorProps;
|
|
316
323
|
export type SliderBlockModel = {
|
|
317
324
|
type: BlockType.SliderBlock;
|
|
318
325
|
} & SliderProps;
|
|
326
|
+
export type ServiceDemoBlockModel = {
|
|
327
|
+
type: BlockType.ServiceDemoBlock;
|
|
328
|
+
} & ServiceDemoProps;
|
|
319
329
|
export type ExtendedFeaturesBlockModel = {
|
|
320
330
|
type: BlockType.ExtendedFeaturesBlock;
|
|
321
331
|
} & ExtendedFeaturesProps;
|
|
@@ -376,6 +386,6 @@ export type ContentLayoutBlockModel = {
|
|
|
376
386
|
export type ShareBLockModel = {
|
|
377
387
|
type: BlockType.ShareBlock;
|
|
378
388
|
} & ShareBlockProps;
|
|
379
|
-
type BlockModels = SliderBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | SecurityBlockModel | TableBlockModel | TabsBlockModel | SimpleBlockModel | LinkTableBlockModel | HeaderBlockModel | PreviewBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
|
|
389
|
+
type BlockModels = SliderBlockModel | ServiceDemoBlockModel | ExtendedFeaturesBlockModel | PromoFeaturesBlockModel | QuestionsBlockModel | CalculatorBlockModel | BannerBlockModel | CompaniesBlockModel | MediaBlockModel | MapBlockModel | InfoBlockModel | SecurityBlockModel | TableBlockModel | TabsBlockModel | SimpleBlockModel | LinkTableBlockModel | HeaderBlockModel | PreviewBlockModel | IconsBlockModel | HeaderSliderBlockModel | CardLayoutBlockModel | ContentLayoutBlockModel | ShareBLockModel | FilterBlockModel;
|
|
380
390
|
export type Block = BlockModels & BlockBaseProps;
|
|
381
391
|
export {};
|
|
@@ -6,6 +6,8 @@ var BlockType;
|
|
|
6
6
|
BlockType["PromoFeaturesBlock"] = "promo-features-block";
|
|
7
7
|
BlockType["ExtendedFeaturesBlock"] = "extended-features-block";
|
|
8
8
|
BlockType["SliderBlock"] = "slider-block";
|
|
9
|
+
BlockType["CalculatorBlock"] = "calculator-block";
|
|
10
|
+
BlockType["ServiceDemoBlock"] = "service-demo-block";
|
|
9
11
|
BlockType["QuestionsBlock"] = "questions-block";
|
|
10
12
|
BlockType["BannerBlock"] = "banner-block";
|
|
11
13
|
BlockType["CompaniesBlock"] = "companies-block";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ButtonSize, ButtonView } from '@gravity-ui/uikit';
|
|
3
3
|
import { ThemeSupporting } from '../../utils/theme';
|
|
4
4
|
import { AnalyticsEventsBase, ClassNameProps, PixelEventType } from '../common';
|
|
5
5
|
export declare enum AuthorType {
|
|
@@ -99,7 +99,6 @@ export interface BackgroundImageProps extends React.HTMLProps<HTMLDivElement>, P
|
|
|
99
99
|
style?: CSSProperties;
|
|
100
100
|
imageClassName?: string;
|
|
101
101
|
hide?: boolean;
|
|
102
|
-
qa?: string;
|
|
103
102
|
}
|
|
104
103
|
export interface MediaVideoProps extends AnalyticsEventsBase {
|
|
105
104
|
src: string[];
|
|
@@ -132,10 +131,11 @@ export interface FileLinkProps extends ClassNameProps {
|
|
|
132
131
|
onClick?: () => void;
|
|
133
132
|
}
|
|
134
133
|
export type ButtonTheme = ButtonView | 'github' | 'app-store' | 'google-play' | 'scale' | 'monochrome';
|
|
135
|
-
export interface ButtonProps extends AnalyticsEventsBase
|
|
134
|
+
export interface ButtonProps extends AnalyticsEventsBase {
|
|
136
135
|
text: string;
|
|
137
136
|
url: string;
|
|
138
137
|
primary?: boolean;
|
|
138
|
+
size?: ButtonSize;
|
|
139
139
|
theme?: ButtonTheme;
|
|
140
140
|
img?: ButtonImageProps | string;
|
|
141
141
|
metrikaGoals?: MetrikaGoal;
|
|
@@ -174,7 +174,11 @@ export interface MediaComponentVideoProps extends AnalyticsEventsBase {
|
|
|
174
174
|
export interface MediaComponentYoutubeProps {
|
|
175
175
|
youtube: string;
|
|
176
176
|
previewImg?: string;
|
|
177
|
+
/**
|
|
178
|
+
* @deprecated use fullscreen
|
|
179
|
+
*/
|
|
177
180
|
fullScreen?: boolean;
|
|
181
|
+
fullscreen?: boolean;
|
|
178
182
|
}
|
|
179
183
|
export interface MediaComponentImageProps {
|
|
180
184
|
image: ImageProps | ImageProps[] | ImageDeviceProps;
|