@gravity-ui/page-constructor 1.15.0-alpha.2 → 1.15.0-alpha.21
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/README.md +110 -5
- package/build/cjs/blocks/Banner/schema.d.ts +27 -0
- package/build/cjs/blocks/Banner/schema.js +3 -1
- package/build/cjs/blocks/CardLayout/schema.d.ts +6 -0
- package/build/cjs/blocks/ContentLayout/schema.d.ts +3 -0
- package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +3 -0
- package/build/cjs/blocks/Header/schema.d.ts +159 -0
- package/build/cjs/blocks/Header/schema.js +4 -0
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +81 -0
- package/build/cjs/blocks/Icons/schema.d.ts +6 -0
- package/build/cjs/blocks/Info/schema.d.ts +3 -0
- package/build/cjs/blocks/Info/schema.js +2 -0
- package/build/cjs/blocks/LinkTable/schema.d.ts +3 -0
- package/build/cjs/blocks/Media/schema.d.ts +9 -0
- package/build/cjs/blocks/Preview/MediaContent/MediaContent.d.ts +2 -1
- package/build/cjs/blocks/Preview/schema.d.ts +3 -0
- package/build/cjs/blocks/Preview/schema.js +3 -1
- package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
- package/build/cjs/blocks/Questions/schema.d.ts +3 -0
- package/build/cjs/blocks/Security/schema.d.ts +3 -0
- package/build/cjs/blocks/Security/schema.js +3 -1
- package/build/cjs/blocks/Share/Share.js +12 -1
- package/build/cjs/blocks/Simple/schema.d.ts +3 -0
- package/build/cjs/blocks/Slider/schema.d.ts +3 -0
- package/build/cjs/blocks/Table/schema.d.ts +3 -0
- package/build/cjs/blocks/Tabs/schema.d.ts +3 -0
- package/build/cjs/components/BackLink/BackLink.d.ts +1 -0
- package/build/cjs/components/BackLink/BackLink.js +12 -2
- package/build/cjs/components/Button/Button.d.ts +1 -0
- package/build/cjs/components/Button/Button.js +15 -2
- package/build/cjs/components/ButtonTabs/ButtonTabs.d.ts +1 -0
- package/build/cjs/components/CardBase/CardBase.d.ts +1 -0
- package/build/cjs/components/CardBase/CardBase.js +11 -2
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.css +0 -30
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +3 -11
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.css +30 -0
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.d.ts +12 -0
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.js +28 -0
- package/build/cjs/components/Link/Link.js +11 -2
- package/build/cjs/components/Media/Video/Video.js +1 -1
- package/build/cjs/components/ReactPlayer/ReactPlayer.js +21 -25
- package/build/cjs/components/YandexForm/YandexForm.d.ts +1 -0
- package/build/cjs/components/YandexForm/YandexForm.js +11 -3
- package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +5 -4
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +2 -1
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +4 -2
- package/build/cjs/context/analyticsContext/analyticsContext.d.ts +2 -1
- package/build/cjs/context/blockPositionContext/blockPositionContext.d.ts +3 -0
- package/build/cjs/context/blockPositionContext/blockPositionContext.js +6 -0
- package/build/cjs/context/blockPositionContext/index.d.ts +1 -0
- package/build/cjs/context/blockPositionContext/index.js +4 -0
- package/build/cjs/hooks/useAnalytics.d.ts +1 -1
- package/build/cjs/hooks/useAnalytics.js +13 -7
- package/build/cjs/models/common.d.ts +7 -4
- package/build/cjs/models/common.js +7 -1
- package/build/cjs/models/constructor-items/blocks.d.ts +10 -0
- package/build/cjs/models/constructor-items/common.d.ts +9 -4
- package/build/cjs/models/constructor-items/sub-blocks.d.ts +4 -1
- package/build/cjs/navigation/components/NavigationItem/NavigationItem.js +3 -2
- package/build/cjs/schema/validators/common.d.ts +15 -0
- package/build/cjs/schema/validators/common.js +2 -0
- package/build/cjs/schema/validators/event.d.ts +3 -0
- package/build/cjs/schema/validators/event.js +3 -0
- package/build/cjs/sub-blocks/BackgroundCard/schema.d.ts +3 -0
- package/build/cjs/sub-blocks/BackgroundCard/schema.js +2 -0
- package/build/cjs/sub-blocks/HubspotForm/index.js +10 -2
- package/build/cjs/sub-blocks/Quote/Quote.js +12 -1
- package/build/cjs/sub-blocks/Quote/schema.d.ts +3 -0
- package/build/cjs/sub-blocks/Quote/schema.js +3 -1
- package/build/cjs/utils/blocks.d.ts +7 -0
- package/build/cjs/utils/blocks.js +5 -1
- package/build/esm/blocks/Banner/schema.d.ts +27 -0
- package/build/esm/blocks/Banner/schema.js +3 -1
- package/build/esm/blocks/CardLayout/schema.d.ts +6 -0
- package/build/esm/blocks/ContentLayout/schema.d.ts +3 -0
- package/build/esm/blocks/ExtendedFeatures/schema.d.ts +3 -0
- package/build/esm/blocks/Header/schema.d.ts +159 -0
- package/build/esm/blocks/Header/schema.js +4 -0
- package/build/esm/blocks/HeaderSlider/schema.d.ts +81 -0
- package/build/esm/blocks/Icons/schema.d.ts +6 -0
- package/build/esm/blocks/Info/schema.d.ts +3 -0
- package/build/esm/blocks/Info/schema.js +2 -0
- package/build/esm/blocks/LinkTable/schema.d.ts +3 -0
- package/build/esm/blocks/Media/schema.d.ts +9 -0
- package/build/esm/blocks/Preview/MediaContent/MediaContent.d.ts +2 -1
- package/build/esm/blocks/Preview/schema.d.ts +3 -0
- package/build/esm/blocks/Preview/schema.js +3 -1
- package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +3 -0
- package/build/esm/blocks/Questions/schema.d.ts +3 -0
- package/build/esm/blocks/Security/schema.d.ts +3 -0
- package/build/esm/blocks/Security/schema.js +3 -1
- package/build/esm/blocks/Share/Share.js +13 -2
- package/build/esm/blocks/Simple/schema.d.ts +3 -0
- package/build/esm/blocks/Slider/schema.d.ts +3 -0
- package/build/esm/blocks/Table/schema.d.ts +3 -0
- package/build/esm/blocks/Tabs/schema.d.ts +3 -0
- package/build/esm/components/BackLink/BackLink.d.ts +1 -0
- package/build/esm/components/BackLink/BackLink.js +12 -2
- package/build/esm/components/Button/Button.d.ts +1 -0
- package/build/esm/components/Button/Button.js +16 -3
- package/build/esm/components/ButtonTabs/ButtonTabs.d.ts +1 -0
- package/build/esm/components/CardBase/CardBase.d.ts +1 -0
- package/build/esm/components/CardBase/CardBase.js +12 -3
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.css +0 -30
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +3 -11
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.css +30 -0
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.d.ts +13 -0
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbsItem.js +25 -0
- package/build/esm/components/Link/Link.js +12 -3
- package/build/esm/components/Media/Video/Video.js +1 -1
- package/build/esm/components/ReactPlayer/ReactPlayer.js +22 -26
- package/build/esm/components/YandexForm/YandexForm.d.ts +1 -0
- package/build/esm/components/YandexForm/YandexForm.js +12 -4
- package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +6 -5
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +2 -1
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +4 -2
- package/build/esm/context/analyticsContext/analyticsContext.d.ts +2 -1
- package/build/esm/context/blockPositionContext/blockPositionContext.d.ts +3 -0
- package/build/esm/context/blockPositionContext/blockPositionContext.js +2 -0
- package/build/esm/context/blockPositionContext/index.d.ts +1 -0
- package/build/esm/context/blockPositionContext/index.js +1 -0
- package/build/esm/hooks/useAnalytics.d.ts +1 -1
- package/build/esm/hooks/useAnalytics.js +13 -7
- package/build/esm/models/common.d.ts +7 -4
- package/build/esm/models/common.js +6 -0
- package/build/esm/models/constructor-items/blocks.d.ts +10 -0
- package/build/esm/models/constructor-items/common.d.ts +9 -4
- package/build/esm/models/constructor-items/sub-blocks.d.ts +4 -1
- package/build/esm/navigation/components/NavigationItem/NavigationItem.js +3 -2
- package/build/esm/schema/validators/common.d.ts +15 -0
- package/build/esm/schema/validators/common.js +2 -0
- package/build/esm/schema/validators/event.d.ts +3 -0
- package/build/esm/schema/validators/event.js +3 -0
- package/build/esm/sub-blocks/BackgroundCard/schema.d.ts +3 -0
- package/build/esm/sub-blocks/BackgroundCard/schema.js +2 -0
- package/build/esm/sub-blocks/HubspotForm/index.js +10 -2
- package/build/esm/sub-blocks/Quote/Quote.js +14 -3
- package/build/esm/sub-blocks/Quote/schema.d.ts +3 -0
- package/build/esm/sub-blocks/Quote/schema.js +3 -1
- package/build/esm/utils/blocks.d.ts +7 -0
- package/build/esm/utils/blocks.js +3 -0
- package/package.json +1 -1
- package/server/models/common.d.ts +7 -4
- package/server/models/common.js +7 -1
- package/server/models/constructor-items/blocks.d.ts +10 -0
- package/server/models/constructor-items/common.d.ts +9 -4
- package/server/models/constructor-items/sub-blocks.d.ts +4 -1
- package/server/utils/blocks.d.ts +7 -0
- package/server/utils/blocks.js +5 -1
|
@@ -4,11 +4,13 @@ exports.ConstructorHeader = exports.ConstructorItem = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const innerContext_1 = require("../../../../context/innerContext");
|
|
7
|
-
const
|
|
7
|
+
const blockPositionContext_1 = require("../../../../context/blockPositionContext");
|
|
8
|
+
const ConstructorItem = ({ data, children, context }) => {
|
|
8
9
|
const { itemMap } = (0, react_1.useContext)(innerContext_1.InnerContext);
|
|
9
10
|
const { type } = data, rest = tslib_1.__rest(data, ["type"]);
|
|
10
11
|
const Component = itemMap[type];
|
|
11
|
-
return react_1.default.createElement(
|
|
12
|
+
return (react_1.default.createElement(blockPositionContext_1.BlockPositionContext.Provider, { value: context || type },
|
|
13
|
+
react_1.default.createElement(Component, Object.assign({}, rest), children)));
|
|
12
14
|
};
|
|
13
15
|
exports.ConstructorItem = ConstructorItem;
|
|
14
16
|
const ConstructorHeader = ({ data }) => (react_1.default.createElement(exports.ConstructorItem, { data: data, key: data.type }));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AnalyticsEvent } from '../../models';
|
|
3
3
|
export interface AnalyticsContextProps {
|
|
4
|
-
sendEvents?: (
|
|
4
|
+
sendEvents?: (events: AnalyticsEvent[]) => void;
|
|
5
|
+
autoEvents?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare const AnalyticsContext: React.Context<AnalyticsContextProps>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlockPositionContext = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
exports.BlockPositionContext = react_1.default.createContext('');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './blockPositionContext';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { AnalyticsEvent } from '../models';
|
|
2
|
-
export declare const useAnalytics: () => ((e?: AnalyticsEvent | AnalyticsEvent[]
|
|
2
|
+
export declare const useAnalytics: (defaultEvent?: AnalyticsEvent) => ((e?: AnalyticsEvent | AnalyticsEvent[]) => void) & import("lodash").MemoizedFunction;
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useAnalytics = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
4
5
|
const react_1 = require("react");
|
|
5
6
|
const analyticsContext_1 = require("../context/analyticsContext");
|
|
6
|
-
const useAnalytics = () => {
|
|
7
|
-
const { sendEvents } = (0, react_1.useContext)(analyticsContext_1.AnalyticsContext);
|
|
7
|
+
const useAnalytics = (defaultEvent) => {
|
|
8
|
+
const { sendEvents, autoEvents } = (0, react_1.useContext)(analyticsContext_1.AnalyticsContext);
|
|
8
9
|
if (!sendEvents) {
|
|
9
|
-
return
|
|
10
|
+
return (0, lodash_1.memoize)(() => { });
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const defaultEvents = defaultEvent && autoEvents ? [defaultEvent] : [];
|
|
13
|
+
return (0, lodash_1.memoize)((e) => {
|
|
14
|
+
let events = defaultEvents;
|
|
15
|
+
if (e) {
|
|
16
|
+
events = Array.isArray(e) ? [...events, ...e] : [...events, e];
|
|
17
|
+
}
|
|
18
|
+
if (!events) {
|
|
13
19
|
return;
|
|
14
20
|
}
|
|
15
|
-
sendEvents(
|
|
16
|
-
};
|
|
21
|
+
sendEvents(events);
|
|
22
|
+
});
|
|
17
23
|
};
|
|
18
24
|
exports.useAnalytics = useAnalytics;
|
|
@@ -64,10 +64,11 @@ export interface ClassNameProps {
|
|
|
64
64
|
className?: string;
|
|
65
65
|
}
|
|
66
66
|
export type Timeout = ReturnType<typeof setTimeout> | undefined;
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
export declare enum PredefinedEventTypes {
|
|
68
|
+
Default = "default-event",
|
|
69
|
+
Play = "play",
|
|
70
|
+
Stop = "stop"
|
|
71
|
+
}
|
|
71
72
|
export type AnalyticsCounters = {
|
|
72
73
|
include?: string[];
|
|
73
74
|
exclude?: string[];
|
|
@@ -76,5 +77,7 @@ export type AnalyticsEvent<T = {}> = T & {
|
|
|
76
77
|
name: string;
|
|
77
78
|
type?: string;
|
|
78
79
|
counters?: AnalyticsCounters;
|
|
80
|
+
context?: string;
|
|
81
|
+
target?: string;
|
|
79
82
|
};
|
|
80
83
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PixelEventType = exports.Theme = void 0;
|
|
3
|
+
exports.PredefinedEventTypes = exports.PixelEventType = exports.Theme = void 0;
|
|
4
4
|
var Theme;
|
|
5
5
|
(function (Theme) {
|
|
6
6
|
Theme["Light"] = "light";
|
|
@@ -30,3 +30,9 @@ var PixelEventType;
|
|
|
30
30
|
PixelEventType["Subscribe"] = "Subscribe";
|
|
31
31
|
PixelEventType["ViewContent"] = "ViewContent";
|
|
32
32
|
})(PixelEventType = exports.PixelEventType || (exports.PixelEventType = {}));
|
|
33
|
+
var PredefinedEventTypes;
|
|
34
|
+
(function (PredefinedEventTypes) {
|
|
35
|
+
PredefinedEventTypes["Default"] = "default-event";
|
|
36
|
+
PredefinedEventTypes["Play"] = "play";
|
|
37
|
+
PredefinedEventTypes["Stop"] = "stop";
|
|
38
|
+
})(PredefinedEventTypes = exports.PredefinedEventTypes || (exports.PredefinedEventTypes = {}));
|
|
@@ -109,6 +109,7 @@ export interface HeaderBlockProps {
|
|
|
109
109
|
verticalOffset?: 's' | 'm' | 'l' | 'xl';
|
|
110
110
|
breadcrumbs?: HeaderBreadCrumbsProps;
|
|
111
111
|
status?: JSX.Element;
|
|
112
|
+
context?: string;
|
|
112
113
|
}
|
|
113
114
|
export type CalculatorProps = Animatable;
|
|
114
115
|
export interface SimpleBlockProps extends Animatable, Childable {
|
|
@@ -127,6 +128,7 @@ export interface ExtendedFeaturesProps extends Animatable {
|
|
|
127
128
|
title?: TitleProps | string;
|
|
128
129
|
description?: string;
|
|
129
130
|
colSizes?: GridColumnSizesType;
|
|
131
|
+
context?: string;
|
|
130
132
|
}
|
|
131
133
|
export interface PromoFeaturesItem {
|
|
132
134
|
title: string;
|
|
@@ -139,6 +141,7 @@ export interface PromoFeaturesProps extends Animatable {
|
|
|
139
141
|
title?: TitleProps | string;
|
|
140
142
|
description?: string;
|
|
141
143
|
theme?: 'grey' | 'default';
|
|
144
|
+
context?: string;
|
|
142
145
|
}
|
|
143
146
|
export interface QuestionItem {
|
|
144
147
|
title: string;
|
|
@@ -163,6 +166,7 @@ export interface MediaContentProps {
|
|
|
163
166
|
links?: LinkProps[];
|
|
164
167
|
buttons?: ButtonProps[];
|
|
165
168
|
size?: ContentSize;
|
|
169
|
+
context?: string;
|
|
166
170
|
}
|
|
167
171
|
export interface MediaBlockProps extends Animatable, MediaContentProps {
|
|
168
172
|
media: ThemeSupporting<MediaProps>;
|
|
@@ -180,6 +184,7 @@ export interface PreviewBlockProps extends Animatable {
|
|
|
180
184
|
ratioMediaContent?: PreviewRatioMediaContent;
|
|
181
185
|
stopVideo?: boolean;
|
|
182
186
|
showImmediately?: boolean;
|
|
187
|
+
context?: string;
|
|
183
188
|
}
|
|
184
189
|
export interface InfoBlockProps {
|
|
185
190
|
theme?: TextTheme;
|
|
@@ -194,6 +199,7 @@ export interface InfoBlockProps {
|
|
|
194
199
|
links?: Pick<LinkProps, 'text' | 'url'>[];
|
|
195
200
|
leftContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
|
|
196
201
|
rightContent?: Omit<ContentBlockProps, 'colSizes' | 'theme' | 'size'>;
|
|
202
|
+
context?: string;
|
|
197
203
|
}
|
|
198
204
|
export interface SecurityBlockPoint {
|
|
199
205
|
img: string;
|
|
@@ -209,6 +215,7 @@ export interface SecurityBlockProps extends Animatable {
|
|
|
209
215
|
title: string;
|
|
210
216
|
points?: SecurityBlockPoint[];
|
|
211
217
|
media: MediaProps;
|
|
218
|
+
context?: string;
|
|
212
219
|
}
|
|
213
220
|
export interface TableProps {
|
|
214
221
|
content: string[][];
|
|
@@ -235,6 +242,7 @@ export interface TabsBlockProps extends BlockHeaderProps, Animatable {
|
|
|
235
242
|
centered?: boolean;
|
|
236
243
|
direction?: MediaDirection;
|
|
237
244
|
items: TabsBlockItem[];
|
|
245
|
+
context?: string;
|
|
238
246
|
}
|
|
239
247
|
export interface LinkTableBlockProps extends BlockHeaderProps {
|
|
240
248
|
items: LinkProps[][];
|
|
@@ -264,6 +272,7 @@ export interface ContentLayoutBlockProps {
|
|
|
264
272
|
};
|
|
265
273
|
textContent: ContentBlockProps;
|
|
266
274
|
fileContent?: FileLinkProps[];
|
|
275
|
+
context?: string;
|
|
267
276
|
}
|
|
268
277
|
export interface ContentBlockProps {
|
|
269
278
|
title?: TitleBaseProps | string;
|
|
@@ -275,6 +284,7 @@ export interface ContentBlockProps {
|
|
|
275
284
|
colSizes?: GridColumnSizesType;
|
|
276
285
|
centered?: boolean;
|
|
277
286
|
theme?: ContentTheme;
|
|
287
|
+
context?: string;
|
|
278
288
|
}
|
|
279
289
|
export declare enum PCShareSocialNetwork {
|
|
280
290
|
Vk = "vk",
|
|
@@ -110,7 +110,8 @@ export interface MediaVideoProps {
|
|
|
110
110
|
playButton?: PlayButtonProps;
|
|
111
111
|
controls?: MediaVideoControlsType;
|
|
112
112
|
metrika?: MetrikaVideo;
|
|
113
|
-
analyticsEvents?: AnalyticsEvent[];
|
|
113
|
+
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
114
|
+
context?: string;
|
|
114
115
|
}
|
|
115
116
|
export interface LinkProps extends Stylable {
|
|
116
117
|
url: string;
|
|
@@ -123,6 +124,7 @@ export interface LinkProps extends Stylable {
|
|
|
123
124
|
metrikaGoals?: MetrikaGoal;
|
|
124
125
|
pixelEvents?: ButtonPixel;
|
|
125
126
|
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
127
|
+
context?: string;
|
|
126
128
|
}
|
|
127
129
|
export interface FileLinkProps extends ClassNameProps {
|
|
128
130
|
href: string;
|
|
@@ -141,8 +143,9 @@ export interface ButtonProps {
|
|
|
141
143
|
img?: ButtonImageProps | string;
|
|
142
144
|
metrikaGoals?: MetrikaGoal;
|
|
143
145
|
pixelEvents?: ButtonPixel;
|
|
144
|
-
analyticsEvents?: AnalyticsEvent[];
|
|
146
|
+
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
145
147
|
target?: string;
|
|
148
|
+
context?: string;
|
|
146
149
|
}
|
|
147
150
|
export interface ButtonImageProps {
|
|
148
151
|
url: string;
|
|
@@ -170,7 +173,8 @@ export interface MediaComponentVideoProps {
|
|
|
170
173
|
video: MediaVideoProps;
|
|
171
174
|
height?: number;
|
|
172
175
|
metrika?: MetrikaVideo;
|
|
173
|
-
analyticsEvents?: AnalyticsEvent[];
|
|
176
|
+
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
177
|
+
context?: string;
|
|
174
178
|
previewImg?: string;
|
|
175
179
|
}
|
|
176
180
|
export interface MediaComponentYoutubeProps {
|
|
@@ -222,11 +226,12 @@ export interface HeaderBreadCrumbsProps extends ClassNameProps {
|
|
|
222
226
|
items: {
|
|
223
227
|
url: string;
|
|
224
228
|
text: ReactNode;
|
|
229
|
+
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
225
230
|
}[];
|
|
226
231
|
theme?: TextTheme;
|
|
227
232
|
metrikaGoals?: MetrikaGoal;
|
|
228
233
|
pixelEvents?: ButtonPixel;
|
|
229
|
-
|
|
234
|
+
context?: string;
|
|
230
235
|
}
|
|
231
236
|
export interface PreviewContentItemProps {
|
|
232
237
|
title: string;
|
|
@@ -62,6 +62,7 @@ export interface HubspotFormProps extends HubspotEventHandlers {
|
|
|
62
62
|
pixelEvents?: string | string[] | PixelEvent | PixelEvent[] | ButtonPixel;
|
|
63
63
|
hubspotEvents?: string[];
|
|
64
64
|
analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
|
|
65
|
+
context?: string;
|
|
65
66
|
}
|
|
66
67
|
export interface PartnerProps extends CardBaseProps {
|
|
67
68
|
text: string;
|
|
@@ -77,6 +78,7 @@ export interface QuoteProps extends Themable, CardBaseProps {
|
|
|
77
78
|
author?: AuthorItem;
|
|
78
79
|
buttonText?: string;
|
|
79
80
|
theme?: TextTheme;
|
|
81
|
+
context?: string;
|
|
80
82
|
}
|
|
81
83
|
export interface NewsCardData {
|
|
82
84
|
id: number;
|
|
@@ -111,6 +113,7 @@ export interface BannerCardProps {
|
|
|
111
113
|
color?: ThemeSupporting<string>;
|
|
112
114
|
theme?: TextTheme;
|
|
113
115
|
button: Pick<ButtonProps, 'text' | 'url' | 'target'>;
|
|
116
|
+
context?: string;
|
|
114
117
|
}
|
|
115
118
|
export interface MediaCardProps extends MediaProps, CardBaseProps {
|
|
116
119
|
}
|
|
@@ -118,7 +121,7 @@ export interface CardWithImageLinkProps extends Omit<LinkProps, 'text' | 'url'>
|
|
|
118
121
|
title: string;
|
|
119
122
|
link: string;
|
|
120
123
|
}
|
|
121
|
-
export interface CardWithImageProps extends ClassNameProps, Pick<ContentBlockProps, 'title' | 'additionalInfo' | 'buttons' | 'theme'> {
|
|
124
|
+
export interface CardWithImageProps extends ClassNameProps, Pick<ContentBlockProps, 'title' | 'additionalInfo' | 'buttons' | 'theme' | 'context'> {
|
|
122
125
|
image: string;
|
|
123
126
|
description?: string;
|
|
124
127
|
disableCompress?: boolean;
|
|
@@ -10,6 +10,7 @@ const icons_1 = require("../../../icons");
|
|
|
10
10
|
const SocialIcon_1 = tslib_1.__importDefault(require("../SocialIcon/SocialIcon"));
|
|
11
11
|
const utils_2 = require("../../../components/Media/Image/utils");
|
|
12
12
|
const b = (0, utils_1.block)('navigation-item');
|
|
13
|
+
const BLOCK_NAME = 'navigation';
|
|
13
14
|
const Content = ({ text, icon }) => (react_1.default.createElement(react_1.Fragment, null,
|
|
14
15
|
icon && typeof icon !== 'string' && react_1.default.createElement(components_1.Image, Object.assign({ className: b('icon') }, icon)),
|
|
15
16
|
react_1.default.createElement("span", { className: b('text') }, text)));
|
|
@@ -38,8 +39,8 @@ const NavigationLink = (props) => {
|
|
|
38
39
|
};
|
|
39
40
|
const NavigationButton = (props) => {
|
|
40
41
|
const { url, target } = props;
|
|
41
|
-
return target ? (react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url }))) : (react_1.default.createElement(components_1.RouterLink, { href: url },
|
|
42
|
-
react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url }))));
|
|
42
|
+
return target ? (react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url, context: BLOCK_NAME }))) : (react_1.default.createElement(components_1.RouterLink, { href: url },
|
|
43
|
+
react_1.default.createElement(components_1.Button, Object.assign({}, props, { url: url, context: BLOCK_NAME }))));
|
|
43
44
|
};
|
|
44
45
|
//todo: add types support form component in map
|
|
45
46
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -538,6 +538,9 @@ export declare const ButtonProps: {
|
|
|
538
538
|
};
|
|
539
539
|
};
|
|
540
540
|
};
|
|
541
|
+
context: {
|
|
542
|
+
type: string;
|
|
543
|
+
};
|
|
541
544
|
};
|
|
542
545
|
} | {
|
|
543
546
|
type: string;
|
|
@@ -573,6 +576,9 @@ export declare const ButtonProps: {
|
|
|
573
576
|
};
|
|
574
577
|
};
|
|
575
578
|
};
|
|
579
|
+
context: {
|
|
580
|
+
type: string;
|
|
581
|
+
};
|
|
576
582
|
};
|
|
577
583
|
};
|
|
578
584
|
})[];
|
|
@@ -636,6 +642,9 @@ export declare const BlockBaseProps: {
|
|
|
636
642
|
resetPaddings: {
|
|
637
643
|
type: string;
|
|
638
644
|
};
|
|
645
|
+
context: {
|
|
646
|
+
type: string;
|
|
647
|
+
};
|
|
639
648
|
type: {};
|
|
640
649
|
when: {};
|
|
641
650
|
};
|
|
@@ -831,6 +840,9 @@ export declare const ButtonBlock: {
|
|
|
831
840
|
};
|
|
832
841
|
};
|
|
833
842
|
};
|
|
843
|
+
context: {
|
|
844
|
+
type: string;
|
|
845
|
+
};
|
|
834
846
|
};
|
|
835
847
|
} | {
|
|
836
848
|
type: string;
|
|
@@ -866,6 +878,9 @@ export declare const ButtonBlock: {
|
|
|
866
878
|
};
|
|
867
879
|
};
|
|
868
880
|
};
|
|
881
|
+
context: {
|
|
882
|
+
type: string;
|
|
883
|
+
};
|
|
869
884
|
};
|
|
870
885
|
};
|
|
871
886
|
})[];
|
|
@@ -390,6 +390,8 @@ exports.BlockBaseProps = Object.assign(Object.assign({}, exports.BaseProps), { a
|
|
|
390
390
|
enum: exports.containerSizesArray,
|
|
391
391
|
}, resetPaddings: {
|
|
392
392
|
type: 'boolean',
|
|
393
|
+
}, context: {
|
|
394
|
+
type: 'string',
|
|
393
395
|
} });
|
|
394
396
|
exports.TitleProps = {
|
|
395
397
|
type: 'object',
|
|
@@ -6,15 +6,23 @@ const utils_1 = require("../../utils");
|
|
|
6
6
|
const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
|
|
7
7
|
const mobileContext_1 = require("../../context/mobileContext");
|
|
8
8
|
const useMetrika_1 = require("../../hooks/useMetrika");
|
|
9
|
+
const models_1 = require("../../models");
|
|
9
10
|
const hooks_1 = require("../../hooks");
|
|
10
11
|
const HubspotFormContainer_1 = tslib_1.__importDefault(require("./HubspotFormContainer"));
|
|
12
|
+
const blockPositionContext_1 = require("../../context/blockPositionContext");
|
|
11
13
|
const b = (0, utils_1.block)('hubspot-form');
|
|
12
14
|
const HubspotForm = (props) => {
|
|
13
15
|
const { className, theme: themeProp, isMobile: isMobileProp, formId, formInstanceId, portalId, region, formClassName, pixelEvents,
|
|
14
16
|
// hubspotEvents, // TODO: decide how to handle them
|
|
15
17
|
analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, } = props;
|
|
16
18
|
const handleMetrika = (0, useMetrika_1.useMetrika)();
|
|
17
|
-
const
|
|
19
|
+
const context = (0, react_1.useContext)(blockPositionContext_1.BlockPositionContext);
|
|
20
|
+
const defaultEvent = (0, react_1.useMemo)(() => ({
|
|
21
|
+
name: 'hubspot-form-submit',
|
|
22
|
+
type: models_1.PredefinedEventTypes.Default,
|
|
23
|
+
context,
|
|
24
|
+
}), [context]);
|
|
25
|
+
const handleAnalytics = (0, hooks_1.useAnalytics)(defaultEvent);
|
|
18
26
|
const { themeValue } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
|
|
19
27
|
const isMobileValue = (0, react_1.useContext)(mobileContext_1.MobileContext);
|
|
20
28
|
const theme = themeProp !== null && themeProp !== void 0 ? themeProp : themeValue;
|
|
@@ -25,7 +33,7 @@ const HubspotForm = (props) => {
|
|
|
25
33
|
onLoad,
|
|
26
34
|
onSubmit: (e) => {
|
|
27
35
|
handleMetrika === null || handleMetrika === void 0 ? void 0 : handleMetrika({ pixelEvents });
|
|
28
|
-
handleAnalytics
|
|
36
|
+
handleAnalytics(analyticsEvents);
|
|
29
37
|
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(e);
|
|
30
38
|
},
|
|
31
39
|
}), [
|
|
@@ -8,15 +8,26 @@ const models_1 = require("../../models");
|
|
|
8
8
|
const components_1 = require("../../components");
|
|
9
9
|
const ThemeValueContext_1 = require("../../context/theme/ThemeValueContext");
|
|
10
10
|
const utils_2 = require("../../components/Media/Image/utils");
|
|
11
|
+
const hooks_1 = require("../../hooks");
|
|
12
|
+
const blockPositionContext_1 = require("../../context/blockPositionContext");
|
|
11
13
|
const b = (0, utils_1.block)('quote');
|
|
12
14
|
const Quote = (props) => {
|
|
13
15
|
const { theme: textTheme = 'light', color, image, border = 'shadow', text, logo, author, url, buttonText, } = props;
|
|
14
16
|
const { themeValue: theme } = (0, react_1.useContext)(ThemeValueContext_1.ThemeValueContext);
|
|
15
17
|
const imageThemed = (0, utils_1.getThemedValue)(image, theme);
|
|
16
18
|
const imageData = (0, utils_2.getMediaImage)(imageThemed);
|
|
19
|
+
const context = (0, react_1.useContext)(blockPositionContext_1.BlockPositionContext);
|
|
20
|
+
const defaultEvent = (0, react_1.useMemo)(() => ({
|
|
21
|
+
name: 'quote-button-click',
|
|
22
|
+
type: models_1.PredefinedEventTypes.Default,
|
|
23
|
+
context,
|
|
24
|
+
target: url,
|
|
25
|
+
}), [context, url]);
|
|
26
|
+
const handleAnalytics = (0, hooks_1.useAnalytics)(defaultEvent);
|
|
27
|
+
const handleButtonClick = (0, react_1.useCallback)(() => handleAnalytics(), [handleAnalytics]);
|
|
17
28
|
const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
|
|
18
29
|
author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
|
|
19
|
-
url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }) }, buttonText))));
|
|
30
|
+
url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
|
|
20
31
|
return (react_1.default.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
|
|
21
32
|
react_1.default.createElement("div", { key: text, className: b('content-wrapper') },
|
|
22
33
|
react_1.default.createElement("div", null,
|
|
@@ -18,6 +18,8 @@ exports.Quote = {
|
|
|
18
18
|
}, url: {
|
|
19
19
|
type: 'string',
|
|
20
20
|
pattern: schema_1.urlPattern,
|
|
21
|
-
}, theme: common_1.ThemeProps, author: common_1.authorItem
|
|
21
|
+
}, theme: common_1.ThemeProps, author: common_1.authorItem, context: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
} }),
|
|
22
24
|
},
|
|
23
25
|
};
|
|
@@ -2,9 +2,16 @@ import { ConstructorBlock } from '../models/constructor';
|
|
|
2
2
|
import { TextSize, CustomConfig, PCShareSocialNetwork } from '../models';
|
|
3
3
|
export declare function getHeaderTag(size: TextSize): "h1" | "h4" | "h2";
|
|
4
4
|
export declare function getBlockKey(block: ConstructorBlock, index: number): string;
|
|
5
|
+
type GetBlockContextArgs = {
|
|
6
|
+
block: ConstructorBlock;
|
|
7
|
+
index: number;
|
|
8
|
+
parentContext?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function getBlockContext({ parentContext, block, index }: GetBlockContextArgs): string;
|
|
5
11
|
export declare const getCustomBlockTypes: ({ blocks, headers }?: CustomConfig) => string[];
|
|
6
12
|
export declare const getCustomItems: ({ blocks, headers, subBlocks }?: CustomConfig) => {
|
|
7
13
|
[x: string]: any;
|
|
8
14
|
};
|
|
9
15
|
export declare const getCustomHeaderTypes: (customBlocks?: CustomConfig) => string[];
|
|
10
16
|
export declare const getShareLink: (url: string, type: PCShareSocialNetwork, title?: string, text?: string) => string | undefined;
|
|
17
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getShareLink = exports.getCustomHeaderTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockKey = exports.getHeaderTag = void 0;
|
|
3
|
+
exports.getShareLink = exports.getCustomHeaderTypes = exports.getCustomItems = exports.getCustomBlockTypes = exports.getBlockContext = exports.getBlockKey = exports.getHeaderTag = void 0;
|
|
4
4
|
const models_1 = require("../models");
|
|
5
5
|
function getHeaderTag(size) {
|
|
6
6
|
switch (size) {
|
|
@@ -18,6 +18,10 @@ function getBlockKey(block, index) {
|
|
|
18
18
|
return `${block.type}-${index}`;
|
|
19
19
|
}
|
|
20
20
|
exports.getBlockKey = getBlockKey;
|
|
21
|
+
function getBlockContext({ parentContext = '', block, index }) {
|
|
22
|
+
return `${parentContext}${parentContext ? '_' : ''}${block.type}-${index}`;
|
|
23
|
+
}
|
|
24
|
+
exports.getBlockContext = getBlockContext;
|
|
21
25
|
const getCustomBlockTypes = ({ blocks = {}, headers = {} } = {}) => [
|
|
22
26
|
...Object.keys(blocks),
|
|
23
27
|
...Object.keys(headers),
|
|
@@ -206,6 +206,9 @@ export declare const BannerCardProps: {
|
|
|
206
206
|
};
|
|
207
207
|
};
|
|
208
208
|
};
|
|
209
|
+
context: {
|
|
210
|
+
type: string;
|
|
211
|
+
};
|
|
209
212
|
};
|
|
210
213
|
} | {
|
|
211
214
|
type: string;
|
|
@@ -241,6 +244,9 @@ export declare const BannerCardProps: {
|
|
|
241
244
|
};
|
|
242
245
|
};
|
|
243
246
|
};
|
|
247
|
+
context: {
|
|
248
|
+
type: string;
|
|
249
|
+
};
|
|
244
250
|
};
|
|
245
251
|
};
|
|
246
252
|
})[];
|
|
@@ -264,6 +270,9 @@ export declare const BannerCardProps: {
|
|
|
264
270
|
required: string[];
|
|
265
271
|
};
|
|
266
272
|
};
|
|
273
|
+
context: {
|
|
274
|
+
type: string;
|
|
275
|
+
};
|
|
267
276
|
animated: {
|
|
268
277
|
type: string;
|
|
269
278
|
};
|
|
@@ -480,6 +489,9 @@ export declare const BannerBlock: {
|
|
|
480
489
|
};
|
|
481
490
|
};
|
|
482
491
|
};
|
|
492
|
+
context: {
|
|
493
|
+
type: string;
|
|
494
|
+
};
|
|
483
495
|
};
|
|
484
496
|
} | {
|
|
485
497
|
type: string;
|
|
@@ -515,6 +527,9 @@ export declare const BannerBlock: {
|
|
|
515
527
|
};
|
|
516
528
|
};
|
|
517
529
|
};
|
|
530
|
+
context: {
|
|
531
|
+
type: string;
|
|
532
|
+
};
|
|
518
533
|
};
|
|
519
534
|
};
|
|
520
535
|
})[];
|
|
@@ -538,6 +553,9 @@ export declare const BannerBlock: {
|
|
|
538
553
|
required: string[];
|
|
539
554
|
};
|
|
540
555
|
};
|
|
556
|
+
context: {
|
|
557
|
+
type: string;
|
|
558
|
+
};
|
|
541
559
|
animated: {
|
|
542
560
|
type: string;
|
|
543
561
|
};
|
|
@@ -755,6 +773,9 @@ export declare const BannerCard: {
|
|
|
755
773
|
};
|
|
756
774
|
};
|
|
757
775
|
};
|
|
776
|
+
context: {
|
|
777
|
+
type: string;
|
|
778
|
+
};
|
|
758
779
|
};
|
|
759
780
|
} | {
|
|
760
781
|
type: string;
|
|
@@ -790,6 +811,9 @@ export declare const BannerCard: {
|
|
|
790
811
|
};
|
|
791
812
|
};
|
|
792
813
|
};
|
|
814
|
+
context: {
|
|
815
|
+
type: string;
|
|
816
|
+
};
|
|
793
817
|
};
|
|
794
818
|
};
|
|
795
819
|
})[];
|
|
@@ -813,6 +837,9 @@ export declare const BannerCard: {
|
|
|
813
837
|
required: string[];
|
|
814
838
|
};
|
|
815
839
|
};
|
|
840
|
+
context: {
|
|
841
|
+
type: string;
|
|
842
|
+
};
|
|
816
843
|
animated: {
|
|
817
844
|
type: string;
|
|
818
845
|
};
|
|
@@ -17,7 +17,9 @@ export const BannerCardProps = {
|
|
|
17
17
|
}), theme: ThemeProps, width: {
|
|
18
18
|
type: 'string',
|
|
19
19
|
enum: ['s', 'm', 'l'],
|
|
20
|
-
}, button: ButtonBlock
|
|
20
|
+
}, button: ButtonBlock, context: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
} }),
|
|
21
23
|
};
|
|
22
24
|
export const BannerBlock = {
|
|
23
25
|
'banner-block': BannerCardProps,
|
|
@@ -66,6 +66,9 @@ export declare const CardLayoutProps: {
|
|
|
66
66
|
resetPaddings: {
|
|
67
67
|
type: string;
|
|
68
68
|
};
|
|
69
|
+
context: {
|
|
70
|
+
type: string;
|
|
71
|
+
};
|
|
69
72
|
type: {};
|
|
70
73
|
when: {};
|
|
71
74
|
};
|
|
@@ -139,6 +142,9 @@ export declare const CardLayoutBlock: {
|
|
|
139
142
|
resetPaddings: {
|
|
140
143
|
type: string;
|
|
141
144
|
};
|
|
145
|
+
context: {
|
|
146
|
+
type: string;
|
|
147
|
+
};
|
|
142
148
|
type: {};
|
|
143
149
|
when: {};
|
|
144
150
|
};
|