@gravity-ui/blog-constructor 3.1.0-alpha.0 → 3.1.0-alpha.2

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -47,6 +47,8 @@ import {BlogPostPage, BlogConstructorProvider} from '@gravity-ui/blog-constructo
47
47
 
48
48
  ```
49
49
 
50
+ Documentation about [providerProps](./src/constructor/README.md).
51
+
50
52
  Also blog-constructor have server components to help you transform your data if you need
51
53
 
52
54
  ```jsx
@@ -53,14 +53,15 @@ const b = (0, cn_1.block)('post-info');
53
53
  * @returns jsx
54
54
  */
55
55
  const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, dataQa, }) => {
56
- const { hasLikes } = (0, react_1.useContext)(LikesContext_1.LikesContext);
56
+ const { toggleLike } = (0, react_1.useContext)(LikesContext_1.LikesContext);
57
57
  const handleAnalytics = (0, page_constructor_1.useAnalytics)(common_1.DefaultEventNames.SaveButton);
58
+ const isLikeable = Boolean(toggleLike);
58
59
  return (react_1.default.createElement("div", { className: b('item', { size }), onClick: (event) => {
59
60
  // both preventDefault and stopImmediatePropagation required to work properly
60
61
  // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events
61
62
  event.preventDefault();
62
63
  event.nativeEvent.stopImmediatePropagation();
63
- if (!hasLikes) {
64
+ if (!isLikeable) {
64
65
  return;
65
66
  }
66
67
  (0, common_2.postLikeStatus)(postId, Boolean(hasUserLike));
@@ -68,9 +69,9 @@ const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, t
68
69
  metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, metrikaGoal);
69
70
  handleAnalytics();
70
71
  }, "data-qa": `${dataQa ? dataQa + '-' : ''}save` },
71
- react_1.default.createElement("div", { className: b('content', { cursor: hasLikes, theme }) },
72
+ react_1.default.createElement("div", { className: b('content', { cursor: isLikeable, theme }) },
72
73
  react_1.default.createElement("span", { className: b('icon') },
73
74
  react_1.default.createElement(uikit_1.Icon, { data: hasUserLike ? SaveFilled_1.SaveFilled : Save_1.Save, size: ICON_SIZE, className: b({ filled: Boolean(hasUserLike) }) })),
74
- react_1.default.createElement("span", { className: b('title', { cursor: hasLikes }) }, title))));
75
+ react_1.default.createElement("span", { className: b('title', { cursor: isLikeable }) }, title))));
75
76
  };
76
77
  exports.Save = Save;
@@ -7,10 +7,11 @@ export type BlogPageProps = {
7
7
  services?: Service[];
8
8
  navigation?: NavigationData;
9
9
  getPosts: GetPostsType;
10
+ hasLikes?: boolean;
10
11
  toggleLike?: ToggleLikeCallbackType;
11
12
  metaData?: MetaProps;
12
13
  setQuery?: SetQueryType;
13
14
  settings?: PageConstructorProviderProps;
14
15
  pageCountForShowSupportButtons?: number;
15
16
  };
16
- export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, toggleLike, navigation, settings, pageCountForShowSupportButtons, }: BlogPageProps) => JSX.Element;
17
+ export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, }: BlogPageProps) => JSX.Element;
@@ -10,10 +10,10 @@ const MetaWrapper_1 = require("../../components/MetaWrapper/MetaWrapper");
10
10
  const blocksMap_1 = __importDefault(require("../../constructor/blocksMap"));
11
11
  const FeedContext_1 = require("../../contexts/FeedContext");
12
12
  const LikesContext_1 = require("../../contexts/LikesContext");
13
- const BlogPage = ({ content, posts, tags, services, getPosts, metaData, toggleLike, navigation, settings, pageCountForShowSupportButtons, }) => (react_1.default.createElement("main", null,
13
+ const BlogPage = ({ content, posts, tags, services, getPosts, metaData, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, }) => (react_1.default.createElement("main", null,
14
14
  react_1.default.createElement(LikesContext_1.LikesContext.Provider, { value: {
15
15
  toggleLike: toggleLike,
16
- hasLikes: Boolean(toggleLike),
16
+ hasLikes,
17
17
  } },
18
18
  react_1.default.createElement(FeedContext_1.FeedContext.Provider, { value: {
19
19
  posts: posts.posts,
@@ -25,14 +25,15 @@ const b = block('post-info');
25
25
  * @returns jsx
26
26
  */
27
27
  export const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, dataQa, }) => {
28
- const { hasLikes } = useContext(LikesContext);
28
+ const { toggleLike } = useContext(LikesContext);
29
29
  const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);
30
+ const isLikeable = Boolean(toggleLike);
30
31
  return (React.createElement("div", { className: b('item', { size }), onClick: (event) => {
31
32
  // both preventDefault and stopImmediatePropagation required to work properly
32
33
  // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events
33
34
  event.preventDefault();
34
35
  event.nativeEvent.stopImmediatePropagation();
35
- if (!hasLikes) {
36
+ if (!isLikeable) {
36
37
  return;
37
38
  }
38
39
  postLikeStatus(postId, Boolean(hasUserLike));
@@ -40,8 +41,8 @@ export const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal,
40
41
  metrika.reachGoal(MetrikaCounter.CrossSite, metrikaGoal);
41
42
  handleAnalytics();
42
43
  }, "data-qa": `${dataQa ? dataQa + '-' : ''}save` },
43
- React.createElement("div", { className: b('content', { cursor: hasLikes, theme }) },
44
+ React.createElement("div", { className: b('content', { cursor: isLikeable, theme }) },
44
45
  React.createElement("span", { className: b('icon') },
45
46
  React.createElement(Icon, { data: hasUserLike ? SaveFilled : SaveIcon, size: ICON_SIZE, className: b({ filled: Boolean(hasUserLike) }) })),
46
- React.createElement("span", { className: b('title', { cursor: hasLikes }) }, title))));
47
+ React.createElement("span", { className: b('title', { cursor: isLikeable }) }, title))));
47
48
  };
@@ -8,10 +8,11 @@ export type BlogPageProps = {
8
8
  services?: Service[];
9
9
  navigation?: NavigationData;
10
10
  getPosts: GetPostsType;
11
+ hasLikes?: boolean;
11
12
  toggleLike?: ToggleLikeCallbackType;
12
13
  metaData?: MetaProps;
13
14
  setQuery?: SetQueryType;
14
15
  settings?: PageConstructorProviderProps;
15
16
  pageCountForShowSupportButtons?: number;
16
17
  };
17
- export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, toggleLike, navigation, settings, pageCountForShowSupportButtons, }: BlogPageProps) => JSX.Element;
18
+ export declare const BlogPage: ({ content, posts, tags, services, getPosts, metaData, hasLikes, toggleLike, navigation, settings, pageCountForShowSupportButtons, }: BlogPageProps) => JSX.Element;
@@ -5,10 +5,10 @@ import componentMap from '../../constructor/blocksMap';
5
5
  import { FeedContext } from '../../contexts/FeedContext';
6
6
  import { LikesContext } from '../../contexts/LikesContext';
7
7
  import './BlogPage.css';
8
- export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, toggleLike, navigation, settings, pageCountForShowSupportButtons, }) => (React.createElement("main", null,
8
+ export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, }) => (React.createElement("main", null,
9
9
  React.createElement(LikesContext.Provider, { value: {
10
10
  toggleLike: toggleLike,
11
- hasLikes: Boolean(toggleLike),
11
+ hasLikes,
12
12
  } },
13
13
  React.createElement(FeedContext.Provider, { value: {
14
14
  posts: posts.posts,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/blog-constructor",
3
- "version": "3.1.0-alpha.0",
3
+ "version": "3.1.0-alpha.2",
4
4
  "description": "Gravity UI Blog Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {