@gravity-ui/page-constructor 1.14.0-alpha.5 → 1.14.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +0 -7
  2. package/build/cjs/blocks/Banner/schema.d.ts +336 -0
  3. package/build/cjs/blocks/Media/schema.d.ts +112 -0
  4. package/build/cjs/components/Button/Button.js +5 -2
  5. package/build/cjs/components/CardBase/CardBase.d.ts +2 -0
  6. package/build/cjs/components/CardBase/CardBase.js +4 -1
  7. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +4 -1
  8. package/build/cjs/components/Link/Link.js +4 -1
  9. package/build/cjs/components/YandexForm/YandexForm.d.ts +2 -0
  10. package/build/cjs/components/YandexForm/YandexForm.js +13 -2
  11. package/build/cjs/containers/PageConstructor/Provider.d.ts +2 -0
  12. package/build/cjs/containers/PageConstructor/Provider.js +3 -1
  13. package/build/cjs/context/analyticsContext/analyticsContext.d.ts +6 -0
  14. package/build/cjs/context/analyticsContext/analyticsContext.js +6 -0
  15. package/build/cjs/context/analyticsContext/index.d.ts +1 -0
  16. package/build/cjs/{schema/validators/navigation.js → context/analyticsContext/index.js} +1 -1
  17. package/build/cjs/context/metrikaContext/metrikaContext.d.ts +6 -0
  18. package/build/cjs/hooks/useAnalytics.d.ts +2 -0
  19. package/build/cjs/hooks/useAnalytics.js +15 -0
  20. package/build/cjs/hooks/useMetrika.d.ts +6 -0
  21. package/build/cjs/hooks/useMetrika.js +8 -0
  22. package/build/cjs/models/common.d.ts +30 -0
  23. package/build/cjs/models/common.js +3 -0
  24. package/build/cjs/models/constructor-items/common.d.ts +4 -1
  25. package/build/cjs/models/constructor-items/sub-blocks.d.ts +2 -1
  26. package/build/cjs/models/navigation.d.ts +3 -1
  27. package/build/cjs/navigation/components/Header/Header.css +3 -5
  28. package/build/cjs/navigation/components/Logo/Logo.css +6 -5
  29. package/build/cjs/navigation/components/NavigationItem/NavigationItem.css +0 -1
  30. package/build/cjs/schema/index.d.ts +0 -67
  31. package/build/cjs/schema/index.js +1 -2
  32. package/build/cjs/schema/validators/common.d.ts +236 -0
  33. package/build/cjs/schema/validators/common.js +10 -0
  34. package/build/cjs/schema/validators/event.d.ts +54 -0
  35. package/build/cjs/schema/validators/event.js +57 -0
  36. package/build/cjs/schema/validators/index.d.ts +0 -2
  37. package/build/cjs/schema/validators/index.js +0 -2
  38. package/build/cjs/sub-blocks/HubspotForm/index.js +14 -2
  39. package/build/esm/blocks/Banner/schema.d.ts +336 -0
  40. package/build/esm/blocks/Media/schema.d.ts +112 -0
  41. package/build/esm/components/Button/Button.js +5 -2
  42. package/build/esm/components/CardBase/CardBase.d.ts +2 -0
  43. package/build/esm/components/CardBase/CardBase.js +4 -1
  44. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +4 -1
  45. package/build/esm/components/Link/Link.js +4 -1
  46. package/build/esm/components/YandexForm/YandexForm.d.ts +2 -0
  47. package/build/esm/components/YandexForm/YandexForm.js +13 -2
  48. package/build/esm/containers/PageConstructor/Provider.d.ts +2 -0
  49. package/build/esm/containers/PageConstructor/Provider.js +3 -1
  50. package/build/esm/context/analyticsContext/analyticsContext.d.ts +6 -0
  51. package/build/esm/context/analyticsContext/analyticsContext.js +2 -0
  52. package/build/esm/context/analyticsContext/index.d.ts +1 -0
  53. package/build/esm/context/analyticsContext/index.js +1 -0
  54. package/build/esm/context/metrikaContext/metrikaContext.d.ts +6 -0
  55. package/build/esm/hooks/useAnalytics.d.ts +2 -0
  56. package/build/esm/hooks/useAnalytics.js +11 -0
  57. package/build/esm/hooks/useMetrika.d.ts +6 -0
  58. package/build/esm/hooks/useMetrika.js +8 -0
  59. package/build/esm/models/common.d.ts +30 -0
  60. package/build/esm/models/common.js +3 -0
  61. package/build/esm/models/constructor-items/common.d.ts +4 -1
  62. package/build/esm/models/constructor-items/sub-blocks.d.ts +2 -1
  63. package/build/esm/models/navigation.d.ts +3 -1
  64. package/build/esm/navigation/components/Header/Header.css +3 -5
  65. package/build/esm/navigation/components/Logo/Logo.css +6 -5
  66. package/build/esm/navigation/components/NavigationItem/NavigationItem.css +0 -1
  67. package/build/esm/schema/index.d.ts +0 -67
  68. package/build/esm/schema/index.js +1 -2
  69. package/build/esm/schema/validators/common.d.ts +236 -0
  70. package/build/esm/schema/validators/common.js +10 -0
  71. package/build/esm/schema/validators/event.d.ts +54 -0
  72. package/build/esm/schema/validators/event.js +54 -0
  73. package/build/esm/schema/validators/index.d.ts +0 -2
  74. package/build/esm/schema/validators/index.js +0 -2
  75. package/build/esm/sub-blocks/HubspotForm/index.js +14 -2
  76. package/package.json +1 -1
  77. package/server/models/common.d.ts +30 -0
  78. package/server/models/common.js +3 -0
  79. package/server/models/constructor-items/common.d.ts +4 -1
  80. package/server/models/constructor-items/sub-blocks.d.ts +2 -1
  81. package/server/models/navigation.d.ts +3 -1
  82. package/build/cjs/navigation/schema.d.ts +0 -60
  83. package/build/cjs/navigation/schema.js +0 -80
  84. package/build/cjs/schema/validators/navigation.d.ts +0 -1
  85. package/build/esm/navigation/schema.d.ts +0 -60
  86. package/build/esm/navigation/schema.js +0 -77
  87. package/build/esm/schema/validators/navigation.d.ts +0 -1
  88. package/build/esm/schema/validators/navigation.js +0 -1
@@ -173,6 +173,118 @@ export declare const BannerCardProps: {
173
173
  };
174
174
  };
175
175
  };
176
+ events: {
177
+ anyOf: ({
178
+ type: string;
179
+ additionalProperties: boolean;
180
+ required: string[];
181
+ properties: {
182
+ name: {
183
+ type: string;
184
+ };
185
+ type: {
186
+ type: string;
187
+ };
188
+ counters: {
189
+ type: string;
190
+ additionalProperties: boolean;
191
+ required: never[];
192
+ properties: {
193
+ include: {
194
+ type: string;
195
+ items: {
196
+ type: string;
197
+ };
198
+ };
199
+ exclude: {
200
+ type: string;
201
+ items: {
202
+ type: string;
203
+ };
204
+ };
205
+ };
206
+ };
207
+ category: {
208
+ type: string;
209
+ };
210
+ label: {
211
+ type: string;
212
+ };
213
+ params: {
214
+ type: string;
215
+ items: {
216
+ type: string;
217
+ additionalProperties: boolean;
218
+ required: string[];
219
+ properties: {
220
+ key: {
221
+ type: string;
222
+ };
223
+ value: {
224
+ type: string;
225
+ };
226
+ };
227
+ };
228
+ };
229
+ };
230
+ } | {
231
+ type: string;
232
+ items: {
233
+ type: string;
234
+ additionalProperties: boolean;
235
+ required: string[];
236
+ properties: {
237
+ name: {
238
+ type: string;
239
+ };
240
+ type: {
241
+ type: string;
242
+ };
243
+ counters: {
244
+ type: string;
245
+ additionalProperties: boolean;
246
+ required: never[];
247
+ properties: {
248
+ include: {
249
+ type: string;
250
+ items: {
251
+ type: string;
252
+ };
253
+ };
254
+ exclude: {
255
+ type: string;
256
+ items: {
257
+ type: string;
258
+ };
259
+ };
260
+ };
261
+ };
262
+ category: {
263
+ type: string;
264
+ };
265
+ label: {
266
+ type: string;
267
+ };
268
+ params: {
269
+ type: string;
270
+ items: {
271
+ type: string;
272
+ additionalProperties: boolean;
273
+ required: string[];
274
+ properties: {
275
+ key: {
276
+ type: string;
277
+ };
278
+ value: {
279
+ type: string;
280
+ };
281
+ };
282
+ };
283
+ };
284
+ };
285
+ };
286
+ })[];
287
+ };
176
288
  target: {
177
289
  type: string;
178
290
  enum: string[];
@@ -375,6 +487,118 @@ export declare const BannerBlock: {
375
487
  };
376
488
  };
377
489
  };
490
+ events: {
491
+ anyOf: ({
492
+ type: string;
493
+ additionalProperties: boolean;
494
+ required: string[];
495
+ properties: {
496
+ name: {
497
+ type: string;
498
+ };
499
+ type: {
500
+ type: string;
501
+ };
502
+ counters: {
503
+ type: string;
504
+ additionalProperties: boolean;
505
+ required: never[];
506
+ properties: {
507
+ include: {
508
+ type: string;
509
+ items: {
510
+ type: string;
511
+ };
512
+ };
513
+ exclude: {
514
+ type: string;
515
+ items: {
516
+ type: string;
517
+ };
518
+ };
519
+ };
520
+ };
521
+ category: {
522
+ type: string;
523
+ };
524
+ label: {
525
+ type: string;
526
+ };
527
+ params: {
528
+ type: string;
529
+ items: {
530
+ type: string;
531
+ additionalProperties: boolean;
532
+ required: string[];
533
+ properties: {
534
+ key: {
535
+ type: string;
536
+ };
537
+ value: {
538
+ type: string;
539
+ };
540
+ };
541
+ };
542
+ };
543
+ };
544
+ } | {
545
+ type: string;
546
+ items: {
547
+ type: string;
548
+ additionalProperties: boolean;
549
+ required: string[];
550
+ properties: {
551
+ name: {
552
+ type: string;
553
+ };
554
+ type: {
555
+ type: string;
556
+ };
557
+ counters: {
558
+ type: string;
559
+ additionalProperties: boolean;
560
+ required: never[];
561
+ properties: {
562
+ include: {
563
+ type: string;
564
+ items: {
565
+ type: string;
566
+ };
567
+ };
568
+ exclude: {
569
+ type: string;
570
+ items: {
571
+ type: string;
572
+ };
573
+ };
574
+ };
575
+ };
576
+ category: {
577
+ type: string;
578
+ };
579
+ label: {
580
+ type: string;
581
+ };
582
+ params: {
583
+ type: string;
584
+ items: {
585
+ type: string;
586
+ additionalProperties: boolean;
587
+ required: string[];
588
+ properties: {
589
+ key: {
590
+ type: string;
591
+ };
592
+ value: {
593
+ type: string;
594
+ };
595
+ };
596
+ };
597
+ };
598
+ };
599
+ };
600
+ })[];
601
+ };
378
602
  target: {
379
603
  type: string;
380
604
  enum: string[];
@@ -578,6 +802,118 @@ export declare const BannerCard: {
578
802
  };
579
803
  };
580
804
  };
805
+ events: {
806
+ anyOf: ({
807
+ type: string;
808
+ additionalProperties: boolean;
809
+ required: string[];
810
+ properties: {
811
+ name: {
812
+ type: string;
813
+ };
814
+ type: {
815
+ type: string;
816
+ };
817
+ counters: {
818
+ type: string;
819
+ additionalProperties: boolean;
820
+ required: never[];
821
+ properties: {
822
+ include: {
823
+ type: string;
824
+ items: {
825
+ type: string;
826
+ };
827
+ };
828
+ exclude: {
829
+ type: string;
830
+ items: {
831
+ type: string;
832
+ };
833
+ };
834
+ };
835
+ };
836
+ category: {
837
+ type: string;
838
+ };
839
+ label: {
840
+ type: string;
841
+ };
842
+ params: {
843
+ type: string;
844
+ items: {
845
+ type: string;
846
+ additionalProperties: boolean;
847
+ required: string[];
848
+ properties: {
849
+ key: {
850
+ type: string;
851
+ };
852
+ value: {
853
+ type: string;
854
+ };
855
+ };
856
+ };
857
+ };
858
+ };
859
+ } | {
860
+ type: string;
861
+ items: {
862
+ type: string;
863
+ additionalProperties: boolean;
864
+ required: string[];
865
+ properties: {
866
+ name: {
867
+ type: string;
868
+ };
869
+ type: {
870
+ type: string;
871
+ };
872
+ counters: {
873
+ type: string;
874
+ additionalProperties: boolean;
875
+ required: never[];
876
+ properties: {
877
+ include: {
878
+ type: string;
879
+ items: {
880
+ type: string;
881
+ };
882
+ };
883
+ exclude: {
884
+ type: string;
885
+ items: {
886
+ type: string;
887
+ };
888
+ };
889
+ };
890
+ };
891
+ category: {
892
+ type: string;
893
+ };
894
+ label: {
895
+ type: string;
896
+ };
897
+ params: {
898
+ type: string;
899
+ items: {
900
+ type: string;
901
+ additionalProperties: boolean;
902
+ required: string[];
903
+ properties: {
904
+ key: {
905
+ type: string;
906
+ };
907
+ value: {
908
+ type: string;
909
+ };
910
+ };
911
+ };
912
+ };
913
+ };
914
+ };
915
+ })[];
916
+ };
581
917
  target: {
582
918
  type: string;
583
919
  enum: string[];
@@ -426,6 +426,118 @@ export declare const MediaBlock: {
426
426
  };
427
427
  };
428
428
  };
429
+ events: {
430
+ anyOf: ({
431
+ type: string;
432
+ additionalProperties: boolean;
433
+ required: string[];
434
+ properties: {
435
+ name: {
436
+ type: string;
437
+ };
438
+ type: {
439
+ type: string;
440
+ };
441
+ counters: {
442
+ type: string;
443
+ additionalProperties: boolean;
444
+ required: never[];
445
+ properties: {
446
+ include: {
447
+ type: string;
448
+ items: {
449
+ type: string;
450
+ };
451
+ };
452
+ exclude: {
453
+ type: string;
454
+ items: {
455
+ type: string;
456
+ };
457
+ };
458
+ };
459
+ };
460
+ category: {
461
+ type: string;
462
+ };
463
+ label: {
464
+ type: string;
465
+ };
466
+ params: {
467
+ type: string;
468
+ items: {
469
+ type: string;
470
+ additionalProperties: boolean;
471
+ required: string[];
472
+ properties: {
473
+ key: {
474
+ type: string;
475
+ };
476
+ value: {
477
+ type: string;
478
+ };
479
+ };
480
+ };
481
+ };
482
+ };
483
+ } | {
484
+ type: string;
485
+ items: {
486
+ type: string;
487
+ additionalProperties: boolean;
488
+ required: string[];
489
+ properties: {
490
+ name: {
491
+ type: string;
492
+ };
493
+ type: {
494
+ type: string;
495
+ };
496
+ counters: {
497
+ type: string;
498
+ additionalProperties: boolean;
499
+ required: never[];
500
+ properties: {
501
+ include: {
502
+ type: string;
503
+ items: {
504
+ type: string;
505
+ };
506
+ };
507
+ exclude: {
508
+ type: string;
509
+ items: {
510
+ type: string;
511
+ };
512
+ };
513
+ };
514
+ };
515
+ category: {
516
+ type: string;
517
+ };
518
+ label: {
519
+ type: string;
520
+ };
521
+ params: {
522
+ type: string;
523
+ items: {
524
+ type: string;
525
+ additionalProperties: boolean;
526
+ required: string[];
527
+ properties: {
528
+ key: {
529
+ type: string;
530
+ };
531
+ value: {
532
+ type: string;
533
+ };
534
+ };
535
+ };
536
+ };
537
+ };
538
+ };
539
+ })[];
540
+ };
429
541
  target: {
430
542
  type: string;
431
543
  enum: string[];
@@ -5,20 +5,23 @@ import { block, setUrlTld } from '../../utils';
5
5
  import { toCommonSize, toCommonView } from './utils';
6
6
  import { LocaleContext } from '../../context/localeContext/localeContext';
7
7
  import { useMetrika } from '../../hooks/useMetrika';
8
+ import { useAnalytics } from '../../hooks/useAnalytics';
8
9
  import { Github } from '../../icons';
9
10
  import './Button.css';
10
11
  const b = block('button-block');
11
12
  const Button = (props) => {
12
13
  const handleMetrika = useMetrika();
14
+ const handleAnalytics = useAnalytics();
13
15
  const { lang, tld } = useContext(LocaleContext);
14
- const { className, metrikaGoals, pixelEvents, size = 'l', theme = 'normal', url, img, onClick: onClickOrigin, text } = props, rest = __rest(props, ["className", "metrikaGoals", "pixelEvents", "size", "theme", "url", "img", "onClick", "text"]);
16
+ const { className, metrikaGoals, pixelEvents, analyticsEvents, size = 'l', theme = 'normal', url, img, onClick: onClickOrigin, text } = props, rest = __rest(props, ["className", "metrikaGoals", "pixelEvents", "analyticsEvents", "size", "theme", "url", "img", "onClick", "text"]);
15
17
  const defaultImgPosition = 'left';
16
18
  const onClick = useCallback(() => {
17
19
  handleMetrika({ metrikaGoals, pixelEvents });
20
+ handleAnalytics(analyticsEvents);
18
21
  if (onClickOrigin) {
19
22
  onClickOrigin();
20
23
  }
21
- }, [handleMetrika, metrikaGoals, pixelEvents, onClickOrigin]);
24
+ }, [handleMetrika, metrikaGoals, pixelEvents, handleAnalytics, analyticsEvents, onClickOrigin]);
22
25
  const buttonImg = img instanceof Object
23
26
  ? { url: img.url, position: img.position || defaultImgPosition, alt: img.alt }
24
27
  : { url: img, position: defaultImgPosition };
@@ -1,5 +1,6 @@
1
1
  import React, { ReactElement, HTMLAttributeAnchorTarget } from 'react';
2
2
  import { ButtonPixel, CardBaseProps as CardBaseParams, ImageProps, MetrikaGoal, WithChildren } from '../../models';
3
+ import { AnalyticsEvent } from '../../models/common';
3
4
  import './CardBase.css';
4
5
  export interface CardBaseProps extends CardBaseParams {
5
6
  className?: string;
@@ -10,6 +11,7 @@ export interface CardBaseProps extends CardBaseParams {
10
11
  target?: HTMLAttributeAnchorTarget;
11
12
  metrikaGoals?: MetrikaGoal;
12
13
  pixelEvents?: ButtonPixel;
14
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
13
15
  }
14
16
  export interface CardHeaderBaseProps {
15
17
  className?: string;
@@ -3,14 +3,16 @@ import { block } from '../../utils';
3
3
  import BackgroundImage from '../BackgroundImage/BackgroundImage';
4
4
  import RouterLink from '../RouterLink/RouterLink';
5
5
  import { useMetrika } from '../../hooks/useMetrika';
6
+ import { useAnalytics } from '../../hooks/useAnalytics';
6
7
  import './CardBase.css';
7
8
  const b = block('card-base-block');
8
9
  const Header = () => null;
9
10
  const Content = () => null;
10
11
  const Footer = () => null;
11
12
  export const Layout = (props) => {
12
- const { className, bodyClassName, metrikaGoals, pixelEvents, contentClassName, children, url, target, border = 'shadow', } = props;
13
+ const { className, bodyClassName, metrikaGoals, pixelEvents, analyticsEvents, contentClassName, children, url, target, border = 'shadow', } = props;
13
14
  const handleMetrika = useMetrika();
15
+ const handleAnalytics = useAnalytics();
14
16
  let header, content, footer, image, headerClass, footerClass;
15
17
  function handleChild(child) {
16
18
  switch (child.type) {
@@ -43,6 +45,7 @@ export const Layout = (props) => {
43
45
  const fullClassName = b({ border }, className);
44
46
  const onClick = () => {
45
47
  handleMetrika({ metrikaGoals, pixelEvents });
48
+ handleAnalytics(analyticsEvents);
46
49
  };
47
50
  return url ? (React.createElement(RouterLink, { href: url },
48
51
  React.createElement("a", { href: url, target: target, rel: target === '_blank' ? 'noopener noreferrer' : undefined, className: fullClassName, draggable: false, onDragStart: (e) => e.preventDefault(), onClick: onClick }, cardContent))) : (React.createElement("div", { className: fullClassName }, cardContent));
@@ -1,13 +1,16 @@
1
1
  import React from 'react';
2
2
  import { block } from '../../utils';
3
3
  import { useMetrika } from '../../hooks/useMetrika';
4
+ import { useAnalytics } from '../../hooks/useAnalytics';
4
5
  import './HeaderBreadcrumbs.css';
5
6
  const b = block('header-breadcrumbs');
6
7
  export default function HeaderBreadcrumbs(props) {
7
- const { items, metrikaGoals, pixelEvents, theme = 'light', className } = props;
8
+ const { items, metrikaGoals, pixelEvents, analyticsEvents, theme = 'light', className } = props;
8
9
  const handleMetrika = useMetrika();
10
+ const handleAnalytics = useAnalytics();
9
11
  const onClick = () => {
10
12
  handleMetrika({ metrikaGoals, pixelEvents });
13
+ handleAnalytics(analyticsEvents);
11
14
  };
12
15
  return (React.createElement("div", { className: b({ theme }, className) }, items.map((item) => (React.createElement("div", { className: b('item'), key: item.url },
13
16
  React.createElement("a", { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
@@ -7,6 +7,7 @@ import BackLink from '../BackLink/BackLink';
7
7
  import { LocaleContext } from '../../context/localeContext/localeContext';
8
8
  import { LocationContext } from '../../context/locationContext/locationContext';
9
9
  import { useMetrika } from '../../hooks/useMetrika';
10
+ import { useAnalytics } from '../../hooks/useAnalytics';
10
11
  import './Link.css';
11
12
  const b = block('link-block');
12
13
  const WORD_JOINER_SYM = '\u200b';
@@ -23,14 +24,16 @@ function getArrowSize(size) {
23
24
  }
24
25
  }
25
26
  const LinkBlock = (props) => {
26
- const { text, url, arrow, metrikaGoals, pixelEvents, theme = 'file-link', colorTheme = 'light', textSize = 'm', className, target, children, } = props;
27
+ const { text, url, arrow, metrikaGoals, pixelEvents, analyticsEvents, theme = 'file-link', colorTheme = 'light', textSize = 'm', className, target, children, } = props;
27
28
  const handleMetrika = useMetrika();
29
+ const handleAnalytics = useAnalytics();
28
30
  const { hostname } = useContext(LocationContext);
29
31
  const { tld } = useContext(LocaleContext);
30
32
  const href = setUrlTld(props.url, tld);
31
33
  const defaultTextSize = theme === 'back' ? 'l' : 'm';
32
34
  const onClick = () => {
33
35
  handleMetrika({ metrikaGoals, pixelEvents });
36
+ handleAnalytics(analyticsEvents);
34
37
  };
35
38
  const getLinkByType = () => {
36
39
  switch (theme) {
@@ -1,4 +1,5 @@
1
1
  import { PixelEvent } from '../../models';
2
+ import { AnalyticsEvent } from '../../models/common';
2
3
  export declare const YANDEX_FORM_ORIGIN = "https://forms.yandex.ru";
3
4
  export interface YandexFormProps {
4
5
  id: number | string;
@@ -14,6 +15,7 @@ export interface YandexFormProps {
14
15
  onLoad?: () => void;
15
16
  metrikaGoals?: string | string[];
16
17
  pixelEvents?: string | string[] | PixelEvent | PixelEvent[];
18
+ analyticsEvents?: AnalyticsEvent | AnalyticsEvent[];
17
19
  }
18
20
  declare const YandexForm: (props: YandexFormProps) => JSX.Element;
19
21
  export default YandexForm;
@@ -4,15 +4,17 @@ import { LocaleContext } from '../../context/localeContext';
4
4
  import { MobileContext } from '../../context/mobileContext';
5
5
  import { block } from '../../utils';
6
6
  import { useMetrika } from '../../hooks/useMetrika';
7
+ import { useAnalytics } from '../..//hooks/useAnalytics';
7
8
  export const YANDEX_FORM_ORIGIN = 'https://forms.yandex.ru';
8
9
  const CONTAINER_ID = 'pc-yandex-form-container';
9
10
  const b = block('yandex-form');
10
11
  const YandexForm = (props) => {
11
- const { onLoad, id, params, className, theme, containerId = CONTAINER_ID, headerHeight = HEADER_HEIGHT, onSubmit, metrikaGoals, pixelEvents, customFormOrigin, } = props;
12
+ const { onLoad, id, params, className, theme, containerId = CONTAINER_ID, headerHeight = HEADER_HEIGHT, onSubmit, metrikaGoals, pixelEvents, analyticsEvents, customFormOrigin, } = props;
12
13
  const formContainerRef = useRef(null);
13
14
  const iframeRef = useRef();
14
15
  const yaFormOrigin = customFormOrigin || YANDEX_FORM_ORIGIN;
15
16
  const handleMetrika = useMetrika();
17
+ const handleAnalytics = useAnalytics();
16
18
  const isMobile = useContext(MobileContext);
17
19
  const locale = useContext(LocaleContext);
18
20
  const updateFormIframe = useCallback((container) => {
@@ -53,10 +55,19 @@ const YandexForm = (props) => {
53
55
  window.scrollBy(0, top - headerHeight);
54
56
  }
55
57
  handleMetrika({ metrikaGoals, pixelEvents });
58
+ handleAnalytics(analyticsEvents);
56
59
  if (onSubmit) {
57
60
  onSubmit();
58
61
  }
59
- }, [handleMetrika, metrikaGoals, pixelEvents, onSubmit, headerHeight]);
62
+ }, [
63
+ handleMetrika,
64
+ metrikaGoals,
65
+ pixelEvents,
66
+ handleAnalytics,
67
+ analyticsEvents,
68
+ onSubmit,
69
+ headerHeight,
70
+ ]);
60
71
  const handleMessage = useCallback(({ origin, data }) => {
61
72
  if (origin !== yaFormOrigin) {
62
73
  return;
@@ -1,4 +1,5 @@
1
1
  import { MetrikaContextProps } from '../../context/metrikaContext';
2
+ import { AnalyticsContextProps } from '../../context/analyticsContext';
2
3
  import { ProjectSettingsContextProps } from '../../context/projectSettingsContext';
3
4
  import { SSRContextProps } from '../../context/ssrContext';
4
5
  import { LocaleContextProps } from '../../context/localeContext';
@@ -13,5 +14,6 @@ export interface PageConstructorProviderProps {
13
14
  ssrConfig?: SSRContextProps;
14
15
  theme?: ConstructorTheme;
15
16
  projectSettings?: ProjectSettingsContextProps;
17
+ analytics?: AnalyticsContextProps;
16
18
  }
17
19
  export declare const PageConstructorProvider: (props: WithChildren<PageConstructorProviderProps>) => JSX.Element;