@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 +2 -0
- package/build/cjs/components/PostInfo/components/Save.js +5 -4
- package/build/cjs/containers/BlogPage/BlogPage.d.ts +2 -1
- package/build/cjs/containers/BlogPage/BlogPage.js +2 -2
- package/build/esm/components/PostInfo/components/Save.js +5 -4
- package/build/esm/containers/BlogPage/BlogPage.d.ts +2 -1
- package/build/esm/containers/BlogPage/BlogPage.js +2 -2
- package/package.json +1 -1
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 {
|
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 (!
|
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:
|
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:
|
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
|
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 {
|
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 (!
|
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:
|
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:
|
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
|
11
|
+
hasLikes,
|
12
12
|
} },
|
13
13
|
React.createElement(FeedContext.Provider, { value: {
|
14
14
|
posts: posts.posts,
|