@gravity-ui/blog-constructor 5.16.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. package/README.md +5 -5
  2. package/build/cjs/blocks/Banner/Banner.js +7 -9
  3. package/build/cjs/blocks/CTA/CTA.js +7 -9
  4. package/build/cjs/blocks/Feed/Feed.js +5 -12
  5. package/build/cjs/blocks/Header/Header.js +10 -14
  6. package/build/cjs/blocks/Media/Media.js +1 -0
  7. package/build/cjs/blocks/Meta/Meta.js +11 -15
  8. package/build/cjs/blocks/Suggest/Suggest.js +8 -11
  9. package/build/cjs/components/FeedHeader/components/Controls/Controls.css +19 -5
  10. package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +1 -2
  11. package/build/cjs/components/FeedHeader/components/Controls/Controls.js +22 -27
  12. package/build/cjs/components/FeedHeader/components/Controls/customRenders.js +1 -1
  13. package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +1 -1
  14. package/build/cjs/components/Paginator/Paginator.js +16 -19
  15. package/build/cjs/components/Paginator/components/NavigationButton.js +1 -1
  16. package/build/cjs/components/PostCard/PostCard.d.ts +3 -6
  17. package/build/cjs/components/PostCard/PostCard.js +2 -2
  18. package/build/cjs/components/PostInfo/PostInfo.d.ts +4 -10
  19. package/build/cjs/components/PostInfo/PostInfo.js +4 -4
  20. package/build/cjs/components/PostInfo/SuggestPostInfo.js +4 -1
  21. package/build/cjs/components/PostInfo/components/ReadingTime.js +1 -1
  22. package/build/cjs/components/PostInfo/components/Save.d.ts +4 -6
  23. package/build/cjs/components/PostInfo/components/Save.js +3 -6
  24. package/build/cjs/components/PostInfo/components/Sharing.d.ts +3 -5
  25. package/build/cjs/components/PostInfo/components/Sharing.js +4 -10
  26. package/build/cjs/components/Posts/Posts.js +3 -3
  27. package/build/cjs/components/PostsEmpty/PostsEmpty.js +2 -2
  28. package/build/cjs/components/PostsError/PostsError.js +3 -3
  29. package/build/cjs/components/PromptSignIn/PromptSignIn.js +2 -2
  30. package/build/cjs/components/Search/Search.js +1 -1
  31. package/build/cjs/constants.d.ts +2 -1
  32. package/build/cjs/constants.js +20 -19
  33. package/build/cjs/constructor/BlogConstructorProvider.js +1 -0
  34. package/build/cjs/containers/BlogPage/BlogPage.d.ts +1 -2
  35. package/build/cjs/containers/BlogPostPage/BlogPostPage.css +1 -1
  36. package/build/cjs/contexts/FeedContext.d.ts +1 -2
  37. package/build/cjs/contexts/LocaleContext.js +2 -2
  38. package/build/cjs/counters/metrika.js +0 -3
  39. package/build/cjs/counters/utils.d.ts +1 -1
  40. package/build/cjs/counters/utils.js +7 -7
  41. package/build/cjs/i18n/index.d.ts +1 -3
  42. package/build/cjs/i18n/index.js +8 -10
  43. package/build/cjs/index.d.ts +0 -1
  44. package/build/cjs/index.js +1 -3
  45. package/build/cjs/models/common.d.ts +1 -4
  46. package/build/cjs/models/locale.d.ts +1 -4
  47. package/build/cjs/models/locale.js +1 -6
  48. package/build/cjs/utils/common.d.ts +15 -3
  49. package/build/cjs/utils/common.js +20 -19
  50. package/build/esm/blocks/Banner/Banner.js +8 -10
  51. package/build/esm/blocks/CTA/CTA.js +8 -10
  52. package/build/esm/blocks/Feed/Feed.js +8 -15
  53. package/build/esm/blocks/Header/Header.js +12 -16
  54. package/build/esm/blocks/Media/Media.js +1 -0
  55. package/build/esm/blocks/Meta/Meta.js +13 -17
  56. package/build/esm/blocks/Suggest/Suggest.js +9 -12
  57. package/build/esm/components/FeedHeader/components/Controls/Controls.css +19 -5
  58. package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +1 -2
  59. package/build/esm/components/FeedHeader/components/Controls/Controls.js +25 -30
  60. package/build/esm/components/FeedHeader/components/Controls/customRenders.js +2 -2
  61. package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +1 -1
  62. package/build/esm/components/Paginator/Paginator.js +18 -21
  63. package/build/esm/components/Paginator/components/NavigationButton.js +2 -2
  64. package/build/esm/components/PostCard/PostCard.d.ts +3 -6
  65. package/build/esm/components/PostCard/PostCard.js +2 -2
  66. package/build/esm/components/PostInfo/PostInfo.d.ts +4 -10
  67. package/build/esm/components/PostInfo/PostInfo.js +4 -4
  68. package/build/esm/components/PostInfo/SuggestPostInfo.js +4 -1
  69. package/build/esm/components/PostInfo/components/ReadingTime.js +2 -2
  70. package/build/esm/components/PostInfo/components/Save.d.ts +4 -6
  71. package/build/esm/components/PostInfo/components/Save.js +3 -6
  72. package/build/esm/components/PostInfo/components/Sharing.d.ts +3 -5
  73. package/build/esm/components/PostInfo/components/Sharing.js +5 -11
  74. package/build/esm/components/Posts/Posts.js +4 -4
  75. package/build/esm/components/PostsEmpty/PostsEmpty.js +3 -3
  76. package/build/esm/components/PostsError/PostsError.js +4 -4
  77. package/build/esm/components/PromptSignIn/PromptSignIn.js +3 -3
  78. package/build/esm/components/Search/Search.js +2 -2
  79. package/build/esm/constants.d.ts +2 -1
  80. package/build/esm/constants.js +19 -18
  81. package/build/esm/constructor/BlogConstructorProvider.js +2 -1
  82. package/build/esm/containers/BlogPage/BlogPage.d.ts +1 -2
  83. package/build/esm/containers/BlogPostPage/BlogPostPage.css +1 -1
  84. package/build/esm/contexts/FeedContext.d.ts +1 -2
  85. package/build/esm/contexts/LocaleContext.js +1 -1
  86. package/build/esm/counters/metrika.js +0 -3
  87. package/build/esm/counters/utils.d.ts +1 -1
  88. package/build/esm/counters/utils.js +6 -6
  89. package/build/esm/i18n/index.d.ts +1 -3
  90. package/build/esm/i18n/index.js +7 -9
  91. package/build/esm/index.d.ts +0 -1
  92. package/build/esm/index.js +0 -1
  93. package/build/esm/models/common.d.ts +1 -4
  94. package/build/esm/models/locale.d.ts +1 -4
  95. package/build/esm/models/locale.js +0 -5
  96. package/build/esm/utils/common.d.ts +15 -3
  97. package/build/esm/utils/common.js +18 -17
  98. package/package.json +15 -14
  99. package/server/data/contentFilter.d.ts +1 -1
  100. package/server/data/contentFilter.js +2 -1
  101. package/server/data/transformPageContent.d.ts +2 -2
  102. package/server/data/transformPost.d.ts +7 -2
  103. package/server/data/transformPost.js +1 -1
  104. package/server/index.d.ts +1 -1
  105. package/server/models/common.d.ts +1 -4
  106. package/server/models/locale.d.ts +1 -4
  107. package/server/models/locale.js +1 -6
  108. package/styles/storybook/common.scss +8 -0
  109. package/styles/storybook/index.scss +1 -1
  110. package/styles/styles.css +115 -0
  111. package/styles/styles.scss +1 -0
  112. package/build/cjs/configure.d.ts +0 -5
  113. package/build/cjs/configure.js +0 -8
  114. package/build/esm/configure.d.ts +0 -5
  115. package/build/esm/configure.js +0 -4
@@ -18,18 +18,18 @@ const b = (0, cn_1.block)('post-info');
18
18
  * @param readingTime - post reading time
19
19
  * @param date - post create date
20
20
  * @param theme - theme name
21
- * @param metrikaGoals - metrika goals name
22
21
  * @param qa - test-attr
22
+ * @param analyticsEventsContainer - a map of records with a single or collection of objects detailing analytics events
23
23
  *
24
24
  * @returns jsx
25
25
  */
26
- const PostInfo = ({ date, readingTime, postId, theme = 'light', metrikaGoals, qa, }) => {
26
+ const PostInfo = ({ date, readingTime, postId, theme = 'light', qa, analyticsEventsContainer, }) => {
27
27
  const { likes } = (0, react_1.useContext)(PostPageContext_1.PostPageContext);
28
28
  const qaAttributes = (0, common_1.getQaAttributes)(qa, 'date', 'reading-time', 'save');
29
29
  return (react_1.default.createElement("div", { className: b('container', { theme }) },
30
30
  date && react_1.default.createElement(Date_1.Date, { date: date, qa: qaAttributes.date }),
31
31
  readingTime && react_1.default.createElement(ReadingTime_1.ReadingTime, { readingTime: readingTime, qa: qaAttributes.readingTime }),
32
- react_1.default.createElement(Sharing_1.Sharing, { metrikaGoal: metrikaGoals === null || metrikaGoals === void 0 ? void 0 : metrikaGoals.sharing, theme: theme }),
33
- likes && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likes.likesCount, hasUserLike: likes.hasUserLike, handleUserLike: likes.handleUserLike, metrikaGoal: metrikaGoals === null || metrikaGoals === void 0 ? void 0 : metrikaGoals.save, theme: theme, qa: qaAttributes.save }))));
32
+ react_1.default.createElement(Sharing_1.Sharing, { theme: theme, analyticsEvents: analyticsEventsContainer === null || analyticsEventsContainer === void 0 ? void 0 : analyticsEventsContainer.sharing }),
33
+ likes && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likes.likesCount, hasUserLike: likes.hasUserLike, handleUserLike: likes.handleUserLike, analyticsEvents: analyticsEventsContainer === null || analyticsEventsContainer === void 0 ? void 0 : analyticsEventsContainer.save, theme: theme, qa: qaAttributes.save }))));
34
34
  };
35
35
  exports.PostInfo = PostInfo;
@@ -9,7 +9,10 @@ const cn_1 = require("../../utils/cn");
9
9
  const Date_1 = require("./components/Date");
10
10
  const ReadingTime_1 = require("./components/ReadingTime");
11
11
  const Save_1 = require("./components/Save");
12
+ const common_2 = require("../../utils/common");
13
+ const constants_1 = require("../../constants");
12
14
  const b = (0, cn_1.block)('post-info');
15
+ const saveEvents = (0, common_2.prepareAnalyticsEvent)({ name: constants_1.DefaultGoalIds.saveSuggest });
13
16
  /**
14
17
  * Suggest blog card info component
15
18
  *
@@ -37,6 +40,6 @@ const SuggestPostInfo = ({ postId, date, readingTime, likes, size = common_1.Pos
37
40
  react_1.default.createElement("div", { className: b('suggest-container') },
38
41
  date && react_1.default.createElement(Date_1.Date, { date: date, size: size, id: dateId }),
39
42
  readingTime && (react_1.default.createElement(ReadingTime_1.ReadingTime, { readingTime: readingTime, size: size, id: readingTimeId }))),
40
- likes && postId && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likesCount, hasUserLike: hasUserLike, handleUserLike: handleLike, size: size, qa: qa }))));
43
+ likes && postId && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likesCount, analyticsEvents: saveEvents, hasUserLike: hasUserLike, handleUserLike: handleLike, size: size, qa: qa }))));
41
44
  };
42
45
  exports.SuggestPostInfo = SuggestPostInfo;
@@ -12,5 +12,5 @@ const ICON_SIZE = 16;
12
12
  const ReadingTime = ({ readingTime, size = 's', id, qa }) => (react_1.default.createElement("div", { className: b('item', { size }), id: id, "data-qa": qa },
13
13
  react_1.default.createElement("span", { className: b('icon') },
14
14
  react_1.default.createElement(uikit_1.Icon, { data: Time_1.Time, size: ICON_SIZE, className: b('icon-color') })),
15
- (0, i18n_1.i18)(i18n_1.Keyset.ContextReadingTime, { count: readingTime })));
15
+ (0, i18n_1.i18n)(i18n_1.Keyset.ContextReadingTime, { count: readingTime })));
16
16
  exports.ReadingTime = ReadingTime;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { AnalyticsEventsProp } from '@gravity-ui/page-constructor';
2
3
  import { QAProps } from '../../../models/common';
3
4
  type SaveProps = QAProps & {
4
5
  title: string | number;
@@ -6,11 +7,8 @@ type SaveProps = QAProps & {
6
7
  hasUserLike: boolean;
7
8
  handleUserLike: () => void;
8
9
  theme?: 'light' | 'dark';
9
- /**
10
- * @deprecated Metrika will be deleted after launch of analyticsEvents
11
- */
12
- metrikaGoal?: string;
13
10
  size?: 's' | 'm';
11
+ analyticsEvents?: AnalyticsEventsProp;
14
12
  };
15
13
  /**
16
14
  * Components for 'save' blog UI-component
@@ -18,11 +16,11 @@ type SaveProps = QAProps & {
18
16
  * @param title - post title
19
17
  * @param postId - post id
20
18
  * @param hasUserLike - flag what blog has like from current user
21
- * @param metrikaGoal - metrika goal name
22
19
  * @param qa - test-attr
23
20
  * @param size - text size
21
+ * @param analyticsEvents - a single or collection of objects detailing analytics events
24
22
  *
25
23
  * @returns jsx
26
24
  */
27
- export declare const Save: ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, qa, }: SaveProps) => React.JSX.Element;
25
+ export declare const Save: ({ title, postId, hasUserLike, handleUserLike, size, theme, qa, analyticsEvents, }: SaveProps) => React.JSX.Element;
28
26
  export {};
@@ -6,8 +6,6 @@ const react_1 = tslib_1.__importStar(require("react"));
6
6
  const page_constructor_1 = require("@gravity-ui/page-constructor");
7
7
  const uikit_1 = require("@gravity-ui/uikit");
8
8
  const LikesContext_1 = require("../../../contexts/LikesContext");
9
- const metrika_1 = tslib_1.__importDefault(require("../../../counters/metrika"));
10
- const utils_1 = require("../../../counters/utils");
11
9
  const Save_1 = require("../../../icons/Save");
12
10
  const SaveFilled_1 = require("../../../icons/SaveFilled");
13
11
  const common_1 = require("../../../models/common");
@@ -21,13 +19,13 @@ const b = (0, cn_1.block)('post-info');
21
19
  * @param title - post title
22
20
  * @param postId - post id
23
21
  * @param hasUserLike - flag what blog has like from current user
24
- * @param metrikaGoal - metrika goal name
25
22
  * @param qa - test-attr
26
23
  * @param size - text size
24
+ * @param analyticsEvents - a single or collection of objects detailing analytics events
27
25
  *
28
26
  * @returns jsx
29
27
  */
30
- const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, qa, }) => {
28
+ const Save = ({ title, postId, hasUserLike, handleUserLike, size, theme, qa, analyticsEvents, }) => {
31
29
  const { toggleLike, isSignedInUser, requireSignIn } = (0, react_1.useContext)(LikesContext_1.LikesContext);
32
30
  const handleAnalytics = (0, page_constructor_1.useAnalytics)(common_1.DefaultEventNames.SaveButton);
33
31
  const isLikeable = Boolean(toggleLike);
@@ -46,8 +44,7 @@ const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, t
46
44
  }
47
45
  (0, common_2.postLikeStatus)(postId, Boolean(hasUserLike));
48
46
  handleUserLike();
49
- metrika_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, metrikaGoal);
50
- handleAnalytics();
47
+ handleAnalytics(analyticsEvents);
51
48
  }, "data-qa": qa },
52
49
  react_1.default.createElement("div", { className: b('content', { cursor: isLikeable, theme }) },
53
50
  react_1.default.createElement("span", { className: b('icon') },
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
+ import { AnalyticsEventsProp } from '@gravity-ui/page-constructor';
2
3
  type SharingProps = {
3
4
  theme?: 'light' | 'dark';
4
- /**
5
- * @deprecated Metrika will be deleted after launch of analyticsEvents
6
- */
7
- metrikaGoal?: string;
5
+ analyticsEvents?: AnalyticsEventsProp;
8
6
  };
9
- export declare const Sharing: ({ theme, metrikaGoal }: SharingProps) => React.JSX.Element;
7
+ export declare const Sharing: ({ theme, analyticsEvents }: SharingProps) => React.JSX.Element;
10
8
  export {};
@@ -8,28 +8,22 @@ const page_constructor_1 = require("@gravity-ui/page-constructor");
8
8
  const MobileContext_1 = require("../../../contexts/MobileContext");
9
9
  const PostPageContext_1 = require("../../../contexts/PostPageContext");
10
10
  const RouterContext_1 = require("../../../contexts/RouterContext");
11
- const metrika_1 = tslib_1.__importDefault(require("../../../counters/metrika"));
12
- const utils_1 = require("../../../counters/utils");
13
11
  const i18n_1 = require("../../../i18n");
14
12
  const ShareArrowUp_1 = require("../../../icons/ShareArrowUp");
15
13
  const common_1 = require("../../../models/common");
16
14
  const cn_1 = require("../../../utils/cn");
17
15
  const common_2 = require("../../../utils/common");
18
16
  const b = (0, cn_1.block)('post-info');
19
- const Sharing = ({ theme, metrikaGoal }) => {
17
+ const Sharing = ({ theme, analyticsEvents }) => {
20
18
  const router = (0, react_1.useContext)(RouterContext_1.RouterContext);
21
19
  const isMobile = (0, react_1.useContext)(MobileContext_1.MobileContext);
22
20
  const { shareOptions } = (0, react_1.useContext)(PostPageContext_1.PostPageContext);
23
21
  const handleAnalyticsGlobal = (0, page_constructor_1.useAnalytics)(common_1.DefaultEventNames.ShareButton);
24
- const handleMetrika = (0, react_1.useCallback)(() => {
25
- metrika_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, metrikaGoal);
26
- }, [metrikaGoal]);
27
22
  const handleAnalytics = (0, react_1.useCallback)(() => {
28
- handleAnalyticsGlobal();
29
- handleMetrika();
30
- }, [handleAnalyticsGlobal, handleMetrika]);
23
+ handleAnalyticsGlobal(analyticsEvents);
24
+ }, [analyticsEvents, handleAnalyticsGlobal]);
31
25
  return (react_1.default.createElement("div", { className: b('item') },
32
26
  react_1.default.createElement("div", { className: b('icon') },
33
- react_1.default.createElement(components_1.SharePopover, { url: (0, common_2.getAbsolutePath)(router), className: b('share'), iconClass: b('share-icon'), switcherClassName: b('switcher', { theme }), tooltipClassName: b('popup'), useWebShareApi: isMobile, direction: components_1.ShareLayoutDirection.Column, buttonTitle: (0, i18n_1.i18)(i18n_1.Keyset.ActionShare), customIcon: ShareArrowUp_1.ShareArrowUp, placement: "bottom", openByHover: false, shareOptions: shareOptions, onClick: handleAnalytics }))));
27
+ react_1.default.createElement(components_1.SharePopover, { url: (0, common_2.getAbsolutePath)(router), className: b('share'), iconClass: b('share-icon'), switcherClassName: b('switcher', { theme }), tooltipClassName: b('popup'), useWebShareApi: isMobile, direction: components_1.ShareLayoutDirection.Column, buttonTitle: (0, i18n_1.i18n)(i18n_1.Keyset.ActionShare), customIcon: ShareArrowUp_1.ShareArrowUp, placement: "bottom", openByHover: false, shareOptions: shareOptions, onClick: handleAnalytics }))));
34
28
  };
35
29
  exports.Sharing = Sharing;
@@ -25,10 +25,10 @@ const Posts = ({ containerId, pinnedPostOnPage, currentPage, postsOnPage, isShow
25
25
  ? common_1.PostCardTitleHeadingLevel.H3
26
26
  : common_1.PostCardTitleHeadingLevel.H2 }))))) : (react_1.default.createElement(PostsEmpty_1.PostsEmpty, null))),
27
27
  react_1.default.createElement("div", { className: b('pagination') },
28
- Boolean(isShowMoreVisible && (postsOnPage === null || postsOnPage === void 0 ? void 0 : postsOnPage.length)) && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", className: b('more-button'), onClick: handleShowMore }, (0, i18n_1.i18)(i18n_1.Keyset.ActionLoadMore))),
28
+ Boolean(isShowMoreVisible && (postsOnPage === null || postsOnPage === void 0 ? void 0 : postsOnPage.length)) && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", className: b('more-button'), onClick: handleShowMore }, (0, i18n_1.i18n)(i18n_1.Keyset.ActionLoadMore))),
29
29
  errorShowMore && (react_1.default.createElement("div", { className: b('error-show-more') },
30
- react_1.default.createElement("div", null, (0, i18n_1.i18)(i18n_1.Keyset.ErrorTitle)),
31
- react_1.default.createElement("div", null, (0, i18n_1.i18)(i18n_1.Keyset.PostLoadError)))),
30
+ react_1.default.createElement("div", null, (0, i18n_1.i18n)(i18n_1.Keyset.ErrorTitle)),
31
+ react_1.default.createElement("div", null, (0, i18n_1.i18n)(i18n_1.Keyset.PostLoadError)))),
32
32
  Boolean(currentPage && postCountOnPage) && (react_1.default.createElement("div", { className: b('paginator') },
33
33
  react_1.default.createElement(Paginator_1.Paginator, { onPageChange: handlePageChange, page: currentPage, totalItems: postCountOnPage, itemsPerPage: perPageInQuery, maxPages: Infinity, pageCountForShowSupportButtons: pageCountForShowSupportButtons, queryParams: queryParams }))))));
34
34
  exports.Posts = Posts;
@@ -7,6 +7,6 @@ const i18n_1 = require("../../i18n");
7
7
  const cn_1 = require("../../utils/cn");
8
8
  const b = (0, cn_1.block)('posts-empty');
9
9
  const PostsEmpty = () => (react_1.default.createElement("div", { className: b('container') },
10
- react_1.default.createElement("div", { className: b('title') }, (0, i18n_1.i18)(i18n_1.Keyset.TitleEmptyContainer)),
11
- react_1.default.createElement("div", { className: b('subtitle') }, (0, i18n_1.i18)(i18n_1.Keyset.ContextEmptyContainer))));
10
+ react_1.default.createElement("div", { className: b('title') }, (0, i18n_1.i18n)(i18n_1.Keyset.TitleEmptyContainer)),
11
+ react_1.default.createElement("div", { className: b('subtitle') }, (0, i18n_1.i18n)(i18n_1.Keyset.ContextEmptyContainer))));
12
12
  exports.PostsEmpty = PostsEmpty;
@@ -10,9 +10,9 @@ const b = (0, cn_1.block)('posts-error');
10
10
  const PostsError = ({ onButtonClick }) => {
11
11
  const handleClick = () => (onButtonClick ? onButtonClick() : window.location.reload());
12
12
  return (react_1.default.createElement("div", { className: b('container') },
13
- react_1.default.createElement("div", { className: b('title') }, (0, i18n_1.i18)(i18n_1.Keyset.ErrorTitle)),
14
- react_1.default.createElement("div", { className: b('subtitle') }, (0, i18n_1.i18)(i18n_1.Keyset.PostLoadError)),
13
+ react_1.default.createElement("div", { className: b('title') }, (0, i18n_1.i18n)(i18n_1.Keyset.ErrorTitle)),
14
+ react_1.default.createElement("div", { className: b('subtitle') }, (0, i18n_1.i18n)(i18n_1.Keyset.PostLoadError)),
15
15
  react_1.default.createElement("div", { className: b('button') },
16
- react_1.default.createElement(uikit_1.Button, { size: "xl", view: "outlined", onClick: handleClick }, (0, i18n_1.i18)(i18n_1.Keyset.ActionTryAgain)))));
16
+ react_1.default.createElement(uikit_1.Button, { size: "xl", view: "outlined", onClick: handleClick }, (0, i18n_1.i18n)(i18n_1.Keyset.ActionTryAgain)))));
17
17
  };
18
18
  exports.PostsError = PostsError;
@@ -10,9 +10,9 @@ const Prompt_1 = require("../Prompt/Prompt");
10
10
  * @returns {JSX|null}
11
11
  */
12
12
  const PromptSignIn = (_a) => {
13
- var { text = (0, i18n_1.i18)(i18n_1.Keyset.PromptSignInOnLike), onClickSignIn = () => alert((0, i18n_1.i18)(i18n_1.Keyset.SignIn)), actions = [
13
+ var { text = (0, i18n_1.i18n)(i18n_1.Keyset.PromptSignInOnLike), onClickSignIn = () => alert((0, i18n_1.i18n)(i18n_1.Keyset.SignIn)), actions = [
14
14
  {
15
- children: (0, i18n_1.i18)(i18n_1.Keyset.SignIn),
15
+ children: (0, i18n_1.i18n)(i18n_1.Keyset.SignIn),
16
16
  onClick: onClickSignIn,
17
17
  size: 'l',
18
18
  },
@@ -20,7 +20,7 @@ const AUTOFOCUS_TIMEOUT = 0;
20
20
  *
21
21
  * @returns {JSX|null}
22
22
  */
23
- const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder = (0, i18n_1.i18)(i18n_1.Keyset.Search), size = 'm', autoFocus = false, value: externalValue, }) => {
23
+ const Search = ({ className, initialValue, onSubmit, debounce = 300, placeholder = (0, i18n_1.i18n)(i18n_1.Keyset.Search), size = 'm', autoFocus = false, value: externalValue, }) => {
24
24
  const handleChange = (0, debounce_1.default)(onSubmit, debounce);
25
25
  const [value, setValue] = (0, react_1.useState)(initialValue);
26
26
  const inputRef = (0, react_1.useRef)(null);
@@ -9,13 +9,14 @@ export declare const BREAKPOINTS: {
9
9
  export declare const DEFAULT_THEME = "light";
10
10
  export declare const UIKIT_ROOT_CLASS = "g-root";
11
11
  export declare const UIKIT_THEME_LIGHT_CLASS: string;
12
- export declare enum BlogMetrikaGoalIds {
12
+ export declare enum DefaultGoalIds {
13
13
  shareTop = "SITE_BLOG_SHARE-TOP_CLICK",
14
14
  shareBottom = "SITE_BLOG_SHARE-BOTTOM_CLICK",
15
15
  breadcrumbsTop = "SITE_BLOG_BREADCRUMBS-TOP_CLICK",
16
16
  breadcrumbsBottom = "SITE_BLOG_BREADCRUMBS-BOTTOM_CLICK",
17
17
  saveTop = "SITE_BLOG_SAVE-TOP_CLICK",
18
18
  saveBottom = "SITE_BLOG_SAVE-BOTTOM_CLICK",
19
+ saveSuggest = "SITE_BLOG_SAVE-SUGGEST_CLICK",
19
20
  suggest = "SITE_BLOG_INTERESTING-CARD_CLICK",
20
21
  bannerCommon = "SITE_BLOG_TEXT-BANNER_CLICK",
21
22
  cta = "SITE_BLOG_CTA_CLICK",
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_PADDINGS = exports.BlogMetrikaGoalIds = exports.UIKIT_THEME_LIGHT_CLASS = exports.UIKIT_ROOT_CLASS = exports.DEFAULT_THEME = exports.BREAKPOINTS = void 0;
3
+ exports.DEFAULT_PADDINGS = exports.DefaultGoalIds = exports.UIKIT_THEME_LIGHT_CLASS = exports.UIKIT_ROOT_CLASS = exports.DEFAULT_THEME = exports.BREAKPOINTS = void 0;
4
4
  const paddings_1 = require("./models/paddings");
5
5
  exports.BREAKPOINTS = {
6
6
  xs: 0,
@@ -12,24 +12,25 @@ exports.BREAKPOINTS = {
12
12
  exports.DEFAULT_THEME = 'light';
13
13
  exports.UIKIT_ROOT_CLASS = 'g-root';
14
14
  exports.UIKIT_THEME_LIGHT_CLASS = `${exports.UIKIT_ROOT_CLASS}_theme_${exports.DEFAULT_THEME}`;
15
- var BlogMetrikaGoalIds;
16
- (function (BlogMetrikaGoalIds) {
17
- BlogMetrikaGoalIds["shareTop"] = "SITE_BLOG_SHARE-TOP_CLICK";
18
- BlogMetrikaGoalIds["shareBottom"] = "SITE_BLOG_SHARE-BOTTOM_CLICK";
19
- BlogMetrikaGoalIds["breadcrumbsTop"] = "SITE_BLOG_BREADCRUMBS-TOP_CLICK";
20
- BlogMetrikaGoalIds["breadcrumbsBottom"] = "SITE_BLOG_BREADCRUMBS-BOTTOM_CLICK";
21
- BlogMetrikaGoalIds["saveTop"] = "SITE_BLOG_SAVE-TOP_CLICK";
22
- BlogMetrikaGoalIds["saveBottom"] = "SITE_BLOG_SAVE-BOTTOM_CLICK";
23
- BlogMetrikaGoalIds["suggest"] = "SITE_BLOG_INTERESTING-CARD_CLICK";
24
- BlogMetrikaGoalIds["bannerCommon"] = "SITE_BLOG_TEXT-BANNER_CLICK";
25
- BlogMetrikaGoalIds["cta"] = "SITE_BLOG_CTA_CLICK";
26
- BlogMetrikaGoalIds["tag"] = "SITE_BLOG_THEME-SELECTOR_CLCK";
27
- BlogMetrikaGoalIds["service"] = "SITE_BLOG_SERVICE-SELECTOR_CLCK";
28
- BlogMetrikaGoalIds["showMore"] = "SITE_BLOG-PAGINATION_SHOW-MORE_CLCK";
29
- BlogMetrikaGoalIds["next"] = "SITE_BLOG-PAGINATION_NEXT_CLCK";
30
- BlogMetrikaGoalIds["home"] = "SITE_BLOG-PAGINATION_HOME_CLCK";
31
- BlogMetrikaGoalIds["page"] = "SITE_BLOG-PAGINATION_PAGE-NMBR_CLCK";
32
- })(BlogMetrikaGoalIds = exports.BlogMetrikaGoalIds || (exports.BlogMetrikaGoalIds = {}));
15
+ var DefaultGoalIds;
16
+ (function (DefaultGoalIds) {
17
+ DefaultGoalIds["shareTop"] = "SITE_BLOG_SHARE-TOP_CLICK";
18
+ DefaultGoalIds["shareBottom"] = "SITE_BLOG_SHARE-BOTTOM_CLICK";
19
+ DefaultGoalIds["breadcrumbsTop"] = "SITE_BLOG_BREADCRUMBS-TOP_CLICK";
20
+ DefaultGoalIds["breadcrumbsBottom"] = "SITE_BLOG_BREADCRUMBS-BOTTOM_CLICK";
21
+ DefaultGoalIds["saveTop"] = "SITE_BLOG_SAVE-TOP_CLICK";
22
+ DefaultGoalIds["saveBottom"] = "SITE_BLOG_SAVE-BOTTOM_CLICK";
23
+ DefaultGoalIds["saveSuggest"] = "SITE_BLOG_SAVE-SUGGEST_CLICK";
24
+ DefaultGoalIds["suggest"] = "SITE_BLOG_INTERESTING-CARD_CLICK";
25
+ DefaultGoalIds["bannerCommon"] = "SITE_BLOG_TEXT-BANNER_CLICK";
26
+ DefaultGoalIds["cta"] = "SITE_BLOG_CTA_CLICK";
27
+ DefaultGoalIds["tag"] = "SITE_BLOG_THEME-SELECTOR_CLCK";
28
+ DefaultGoalIds["service"] = "SITE_BLOG_SERVICE-SELECTOR_CLCK";
29
+ DefaultGoalIds["showMore"] = "SITE_BLOG-PAGINATION_SHOW-MORE_CLCK";
30
+ DefaultGoalIds["next"] = "SITE_BLOG-PAGINATION_NEXT_CLCK";
31
+ DefaultGoalIds["home"] = "SITE_BLOG-PAGINATION_HOME_CLCK";
32
+ DefaultGoalIds["page"] = "SITE_BLOG-PAGINATION_PAGE-NMBR_CLCK";
33
+ })(DefaultGoalIds = exports.DefaultGoalIds || (exports.DefaultGoalIds = {}));
33
34
  exports.DEFAULT_PADDINGS = {
34
35
  [paddings_1.PaddingsDirections.bottom]: 'l',
35
36
  [paddings_1.PaddingsDirections.top]: 'xs',
@@ -14,6 +14,7 @@ const ThemeValueContext_1 = require("../contexts/theme/ThemeValueContext");
14
14
  const BlogConstructorProvider = ({ isMobile, locale = {}, router = {}, theme = constants_1.DEFAULT_THEME, device = {}, analytics = {}, settings = {}, children, }) => {
15
15
  const context = [
16
16
  react_1.default.createElement(ThemeValueContext_1.ThemeValueContext.Provider, { value: { themeValue: theme }, key: "theme-context" }),
17
+ react_1.default.createElement(page_constructor_1.ThemeContext.Provider, { value: { theme: theme }, key: "pc-theme" }),
17
18
  react_1.default.createElement(LocaleContext_1.LocaleContext.Provider, { value: { locale }, key: "locale-context" }),
18
19
  react_1.default.createElement(RouterContext_1.RouterContext.Provider, { value: router, key: "router-context" }),
19
20
  react_1.default.createElement(MobileContext_1.MobileContext.Provider, { value: Boolean(isMobile), key: "is-mobile-context" }),
@@ -1,6 +1,6 @@
1
1
  import React, { SyntheticEvent } from 'react';
2
2
  import { CustomConfig, NavigationData, PageConstructorProviderProps, PageContent } from '@gravity-ui/page-constructor';
3
- import { GetPostsType, MetaProps, PostsProps, Service, SetQueryType, Tag, ToggleLikeCallbackType } from '../../models/common';
3
+ import { GetPostsType, MetaProps, PostsProps, Service, Tag, ToggleLikeCallbackType } from '../../models/common';
4
4
  export type BlogPageProps = {
5
5
  content: PageContent;
6
6
  posts: PostsProps;
@@ -11,7 +11,6 @@ export type BlogPageProps = {
11
11
  hasLikes?: boolean;
12
12
  toggleLike?: ToggleLikeCallbackType;
13
13
  metaData?: MetaProps;
14
- setQuery?: SetQueryType;
15
14
  settings?: PageConstructorProviderProps;
16
15
  custom?: CustomConfig;
17
16
  pageCountForShowSupportButtons?: number;
@@ -1,5 +1,5 @@
1
1
  @charset "UTF-8";
2
- @import '~@doc-tools/transform/dist/css/yfm.css';
2
+ @import '~@diplodoc/transform/dist/css/yfm.css';
3
3
  :root {
4
4
  --header-height: 64px;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { GetPostsType, PostData, Service, SetQueryType, Tag } from '../models/common';
2
+ import { GetPostsType, PostData, Service, Tag } from '../models/common';
3
3
  export interface FeedContextProps {
4
4
  posts?: PostData[];
5
5
  pinnedPost?: PostData;
@@ -7,7 +7,6 @@ export interface FeedContextProps {
7
7
  tags?: Tag[];
8
8
  services?: Service[];
9
9
  getPosts?: GetPostsType;
10
- setQuery?: SetQueryType;
11
10
  pageCountForShowSupportButtons?: number;
12
11
  }
13
12
  export declare const FeedContext: React.Context<FeedContextProps>;
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LocaleContext = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
- const locale_1 = require("../models/locale");
6
+ const uikit_1 = require("@gravity-ui/uikit");
7
7
  exports.LocaleContext = react_1.default.createContext({
8
8
  locale: {
9
9
  code: 'en-En',
10
- lang: locale_1.Lang.En,
10
+ lang: uikit_1.Lang.En,
11
11
  langName: 'English',
12
12
  pathPrefix: 'en',
13
13
  },
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initCounters = void 0;
4
- /**
5
- * @deprecated Metrika will be deleted after launch of analyticsEvents
6
- */
7
4
  const Goal = {
8
5
  SUPPORT_OPEN_FORM: 'SUPPORTOPENFORM',
9
6
  SUPPORT_STEP_1_SUBMIT: 'SUPPORTSTEP1SUBMIT',
@@ -1,4 +1,4 @@
1
- export declare enum MetrikaCounter {
1
+ export declare enum AnalyticsCounter {
2
2
  Main = "main",
3
3
  CrossSite = "cross-site",
4
4
  Scale = "scale"
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MetrikaCounter = void 0;
4
- var MetrikaCounter;
5
- (function (MetrikaCounter) {
6
- MetrikaCounter["Main"] = "main";
7
- MetrikaCounter["CrossSite"] = "cross-site";
8
- MetrikaCounter["Scale"] = "scale";
9
- })(MetrikaCounter = exports.MetrikaCounter || (exports.MetrikaCounter = {}));
3
+ exports.AnalyticsCounter = void 0;
4
+ var AnalyticsCounter;
5
+ (function (AnalyticsCounter) {
6
+ AnalyticsCounter["Main"] = "main";
7
+ AnalyticsCounter["CrossSite"] = "cross-site";
8
+ AnalyticsCounter["Scale"] = "scale";
9
+ })(AnalyticsCounter = exports.AnalyticsCounter || (exports.AnalyticsCounter = {}));
@@ -1,5 +1,3 @@
1
- import { I18N } from '@gravity-ui/i18n';
2
- export declare const i18n: I18N;
3
1
  export declare enum Keyset {
4
2
  Title = "title",
5
3
  TitleBreadcrumbs = "title_breadcrumbs",
@@ -21,4 +19,4 @@ export declare enum Keyset {
21
19
  PromptSignInOnLike = "prompt_sign_in_on_like",
22
20
  SignIn = "Sign In"
23
21
  }
24
- export declare const i18: (key: string, params?: import("@gravity-ui/i18n").Params | undefined) => string;
22
+ export declare const i18n: (key: Keyset, params?: import("@gravity-ui/i18n").Params | undefined) => string;
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.i18 = exports.Keyset = exports.i18n = void 0;
4
- const i18n_1 = require("@gravity-ui/i18n");
5
- const locale_1 = require("../models/locale");
6
- const KEYSET_NAME = 'blog';
7
- exports.i18n = new i18n_1.I18N();
3
+ exports.i18n = exports.Keyset = void 0;
4
+ const i18n_1 = require("@gravity-ui/uikit/i18n");
5
+ const NAMESPACE = 'blog';
8
6
  var Keyset;
9
7
  (function (Keyset) {
10
8
  Keyset["Title"] = "title";
@@ -27,7 +25,7 @@ var Keyset;
27
25
  Keyset["PromptSignInOnLike"] = "prompt_sign_in_on_like";
28
26
  Keyset["SignIn"] = "Sign In";
29
27
  })(Keyset = exports.Keyset || (exports.Keyset = {}));
30
- exports.i18n.registerKeyset(locale_1.Lang.En, KEYSET_NAME, {
28
+ const en = {
31
29
  [Keyset.Title]: 'Blog',
32
30
  [Keyset.TitleBreadcrumbs]: 'Blog',
33
31
  [Keyset.TitleSuggest]: 'See also',
@@ -51,8 +49,8 @@ exports.i18n.registerKeyset(locale_1.Lang.En, KEYSET_NAME, {
51
49
  '{{count}} mins to read',
52
50
  ],
53
51
  [Keyset.SignIn]: 'Sign In',
54
- });
55
- exports.i18n.registerKeyset(locale_1.Lang.Ru, KEYSET_NAME, {
52
+ };
53
+ const ru = {
56
54
  [Keyset.Title]: 'Блог',
57
55
  [Keyset.TitleBreadcrumbs]: 'Блог',
58
56
  [Keyset.TitleSuggest]: 'Читать также',
@@ -76,5 +74,5 @@ exports.i18n.registerKeyset(locale_1.Lang.Ru, KEYSET_NAME, {
76
74
  '{{count}} минут чтения',
77
75
  ],
78
76
  [Keyset.SignIn]: 'Войти',
79
- });
80
- exports.i18 = exports.i18n.keyset(KEYSET_NAME);
77
+ };
78
+ exports.i18n = (0, i18n_1.addComponentKeysets)({ en, ru }, NAMESPACE);
@@ -1,4 +1,3 @@
1
- export { configure } from './configure';
2
1
  export { BlogConstructorProvider } from './constructor/BlogConstructorProvider';
3
2
  export { BlogPostPage } from './containers/BlogPostPage/BlogPostPage';
4
3
  export { BlogPage } from './containers/BlogPage/BlogPage';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BREAKPOINTS = exports.BlogPage = exports.BlogPostPage = exports.BlogConstructorProvider = exports.configure = void 0;
3
+ exports.BREAKPOINTS = exports.BlogPage = exports.BlogPostPage = exports.BlogConstructorProvider = void 0;
4
4
  const tslib_1 = require("tslib");
5
- var configure_1 = require("./configure");
6
- Object.defineProperty(exports, "configure", { enumerable: true, get: function () { return configure_1.configure; } });
7
5
  var BlogConstructorProvider_1 = require("./constructor/BlogConstructorProvider");
8
6
  Object.defineProperty(exports, "BlogConstructorProvider", { enumerable: true, get: function () { return BlogConstructorProvider_1.BlogConstructorProvider; } });
9
7
  var BlogPostPage_1 = require("./containers/BlogPostPage/BlogPostPage");
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { MarkdownItPluginCb } from '@doc-tools/transform/lib/plugins/typings';
2
+ import { MarkdownItPluginCb } from '@diplodoc/transform/lib/plugins/typings';
3
3
  import { HeaderBlockProps as PageConstructorHeaderBlockProps } from '@gravity-ui/page-constructor';
4
4
  import { IBrowser, IDevice } from 'ua-parser-js';
5
5
  import { Locale } from '../models/locale';
@@ -149,9 +149,6 @@ export type GetPostsRequest = {
149
149
  };
150
150
  export type GetPostsType = (query: GetPostsRequest) => Promise<PostsProps>;
151
151
  export type HandleChangeQueryParams = (params: Query) => void;
152
- export type SetQueryType = (params: Query, options?: {
153
- [y: string]: boolean;
154
- }) => Promise<void> | void;
155
152
  export declare enum DefaultEventNames {
156
153
  ShareButton = "share-button-click",
157
154
  SaveButton = "save-button-click",
@@ -1,7 +1,4 @@
1
- export declare enum Lang {
2
- Ru = "ru",
3
- En = "en"
4
- }
1
+ import { Lang } from '@gravity-ui/uikit';
5
2
  export declare enum Currency {
6
3
  RUB = "RUB",
7
4
  USD = "USD",
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Currency = exports.Lang = void 0;
4
- var Lang;
5
- (function (Lang) {
6
- Lang["Ru"] = "ru";
7
- Lang["En"] = "en";
8
- })(Lang = exports.Lang || (exports.Lang = {}));
3
+ exports.Currency = void 0;
9
4
  var Currency;
10
5
  (function (Currency) {
11
6
  Currency["RUB"] = "RUB";
@@ -1,7 +1,8 @@
1
1
  /// <reference types="lodash" />
2
- import { ContentBlockProps, HeaderBreadCrumbsProps, MetrikaGoal, NewMetrikaGoal } from '@gravity-ui/page-constructor';
2
+ import { AnalyticsEvent, AnalyticsEventsProp, ContentBlockProps, HeaderBreadCrumbsProps } from '@gravity-ui/page-constructor';
3
3
  import { RouterContextProps } from '../contexts/RouterContext';
4
4
  import { GetPostsRequest, Query, Tag } from '../models/common';
5
+ import { AnalyticsCounter } from '../counters/utils';
5
6
  export interface QueryParam {
6
7
  name: string;
7
8
  value?: string | number | null;
@@ -38,9 +39,20 @@ type GetBreadcrumbsProps = {
38
39
  };
39
40
  export declare const getBlogPath: (pathPrefix: string) => string;
40
41
  export declare const getBreadcrumbs: ({ tags, blogPath }: GetBreadcrumbsProps) => HeaderBreadCrumbsProps;
41
- export declare const isMetrikaExist: (goal: NewMetrikaGoal, existGoals: NewMetrikaGoal[]) => boolean;
42
- export declare const getBlogElementMetrika: (blogCustomGoal: NewMetrikaGoal, existingGoals?: MetrikaGoal) => string | string[] | NewMetrikaGoal[];
42
+ export declare const getMergedAnalyticsEvents: (analyticEvents: AnalyticsEventsProp, existringEvents?: AnalyticsEventsProp) => {
43
+ name: string;
44
+ type?: string | undefined;
45
+ counters?: import("@gravity-ui/page-constructor").AnalyticsCounters | undefined;
46
+ context?: string | undefined;
47
+ target?: string | undefined;
48
+ }[];
43
49
  export declare const getFeedQueryParams: (queryString: Query, pageNumber?: number) => GetPostsRequest;
44
50
  export declare const scrollOnPageChange: (containerId: string) => void;
45
51
  export declare const getQaAttributes: (qa?: string, ...customKeys: (string | Array<string>)[]) => Record<string, string>;
52
+ type PrepareAnalyticsEventArgs = {
53
+ name: string;
54
+ counter?: AnalyticsCounter;
55
+ options?: Record<string, string | number>;
56
+ };
57
+ export declare const prepareAnalyticsEvent: ({ name, counter, options, }: PrepareAnalyticsEventArgs) => AnalyticsEvent;
46
58
  export {};