@gravity-ui/blog-constructor 6.4.2 → 6.4.4-alpha.0
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/build/cjs/blocks/Header/schema.d.ts +11 -1
- package/build/cjs/blocks/Media/schema.d.ts +8 -1
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js +22 -21
- package/build/cjs/containers/BlogPage/BlogPage.js +3 -1
- package/build/cjs/containers/BlogPostPage/BlogPostPage.js +3 -1
- package/build/cjs/contexts/SettingsContext.d.ts +1 -0
- package/build/cjs/schema/index.d.ts +19 -2
- package/build/esm/blocks/Header/schema.d.ts +11 -1
- package/build/esm/blocks/Media/schema.d.ts +8 -1
- package/build/esm/components/FeedHeader/components/Controls/Controls.js +23 -22
- package/build/esm/containers/BlogPage/BlogPage.js +4 -2
- package/build/esm/containers/BlogPostPage/BlogPostPage.js +4 -2
- package/build/esm/contexts/SettingsContext.d.ts +1 -0
- package/build/esm/schema/index.d.ts +19 -2
- package/package.json +16 -4
- package/server/data/transformPageContent.d.ts +1 -1
@@ -158,6 +158,9 @@ export declare const Header: {
|
|
158
158
|
ariaLabel: {
|
159
159
|
type: string;
|
160
160
|
};
|
161
|
+
contain: {
|
162
|
+
type: string;
|
163
|
+
};
|
161
164
|
};
|
162
165
|
} & {
|
163
166
|
optionName: string;
|
@@ -359,11 +362,17 @@ export declare const Header: {
|
|
359
362
|
ariaLabel: {
|
360
363
|
type: string;
|
361
364
|
};
|
365
|
+
contain: {
|
366
|
+
type: string;
|
367
|
+
};
|
362
368
|
};
|
363
369
|
};
|
364
370
|
youtube: {
|
365
371
|
type: string;
|
366
372
|
};
|
373
|
+
videoIframe: {
|
374
|
+
type: string;
|
375
|
+
};
|
367
376
|
parallax: {
|
368
377
|
type: string;
|
369
378
|
};
|
@@ -475,7 +484,8 @@ export declare const Header: {
|
|
475
484
|
})[];
|
476
485
|
};
|
477
486
|
ratio: {
|
478
|
-
type: string;
|
487
|
+
type: string[];
|
488
|
+
pattern: string;
|
479
489
|
};
|
480
490
|
iframe: {
|
481
491
|
type: string;
|
@@ -160,11 +160,17 @@ export declare const Media: {
|
|
160
160
|
ariaLabel: {
|
161
161
|
type: string;
|
162
162
|
};
|
163
|
+
contain: {
|
164
|
+
type: string;
|
165
|
+
};
|
163
166
|
};
|
164
167
|
};
|
165
168
|
youtube: {
|
166
169
|
type: string;
|
167
170
|
};
|
171
|
+
videoIframe: {
|
172
|
+
type: string;
|
173
|
+
};
|
168
174
|
parallax: {
|
169
175
|
type: string;
|
170
176
|
};
|
@@ -276,7 +282,8 @@ export declare const Media: {
|
|
276
282
|
})[];
|
277
283
|
};
|
278
284
|
ratio: {
|
279
|
-
type: string;
|
285
|
+
type: string[];
|
286
|
+
pattern: string;
|
280
287
|
};
|
281
288
|
iframe: {
|
282
289
|
type: string;
|
@@ -89,26 +89,27 @@ const Controls = ({ handleLoadData, tags = [], services = [], queryParams, }) =>
|
|
89
89
|
};
|
90
90
|
const tagsItems = (0, react_1.useMemo)(() => [{ value: 'empty', content: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags) }, ...tags], [tags]);
|
91
91
|
const servicesItems = (0, react_1.useMemo)(() => (servicesInitial ? [...servicesInitial.split(',')] : []), [servicesInitial]);
|
92
|
-
return (react_1.default.createElement(
|
93
|
-
react_1.default.createElement("
|
94
|
-
|
95
|
-
react_1.default.createElement("div", { className: b('
|
96
|
-
react_1.default.createElement(
|
97
|
-
|
98
|
-
react_1.default.createElement(
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
react_1.default.createElement(
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
react_1.default.createElement(
|
111
|
-
react_1.default.createElement(uikit_1.
|
112
|
-
|
92
|
+
return (react_1.default.createElement(uikit_1.MobileProvider, { mobile: false },
|
93
|
+
react_1.default.createElement("div", { className: b('header') },
|
94
|
+
react_1.default.createElement("h1", { className: b('header-item', { title: true }) }, (0, i18n_1.i18n)(i18n_1.Keyset.Title)),
|
95
|
+
react_1.default.createElement("div", { className: b('header-item', { filters: true }) },
|
96
|
+
react_1.default.createElement("div", { className: b('filter-item') },
|
97
|
+
react_1.default.createElement(Search_1.Search, { className: b('search'), placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.Search), initialValue: search && typeof search === 'string' ? search : '', onSubmit: handleSearch })),
|
98
|
+
react_1.default.createElement("div", { className: b('filter-item') },
|
99
|
+
react_1.default.createElement(uikit_1.Select, { className: b('select'), size: "xl", options: tagsItems, defaultValue: [tagInitial], onUpdate: handleTagSelect, placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags), popupClassName: b('popup', { isMobile }), renderControl: (0, customRenders_1.renderSwitcher)({
|
100
|
+
initial: [tagInitial],
|
101
|
+
list: tagsItems,
|
102
|
+
defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllTags),
|
103
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption })),
|
104
|
+
services.length > 0 ? (react_1.default.createElement("div", { className: b('filter-item') },
|
105
|
+
react_1.default.createElement(uikit_1.Select, { className: b('select'), size: "xl", multiple: true, filterable: true, hasClear: true, disablePortal: true, options: services, defaultValue: servicesItems, popupClassName: b('popup', { isMobile }), onUpdate: handleServicesSelect, placeholder: (0, i18n_1.i18n)(i18n_1.Keyset.AllServices), renderControl: (0, customRenders_1.renderSwitcher)({
|
106
|
+
initial: servicesItems,
|
107
|
+
list: services,
|
108
|
+
defaultLabel: (0, i18n_1.i18n)(i18n_1.Keyset.AllServices),
|
109
|
+
}), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: customRenders_1.renderOption, renderFilter: customRenders_1.renderFilter }))) : null,
|
110
|
+
hasLikes ? (react_1.default.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
|
111
|
+
react_1.default.createElement(uikit_1.Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
|
112
|
+
react_1.default.createElement(uikit_1.Icon, { data: Save_1.Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
|
113
|
+
(0, i18n_1.i18n)(i18n_1.Keyset.ActionSavedOnly)))) : null))));
|
113
114
|
};
|
114
115
|
exports.Controls = Controls;
|
@@ -10,7 +10,9 @@ const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/useP
|
|
10
10
|
const FeedContext_1 = require("../../contexts/FeedContext");
|
11
11
|
const LikesContext_1 = require("../../contexts/LikesContext");
|
12
12
|
const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
|
13
|
+
const SettingsContext_1 = require("../../contexts/SettingsContext");
|
13
14
|
const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
|
15
|
+
const { isAnimationEnabled } = (0, react_1.useContext)(SettingsContext_1.SettingsContext);
|
14
16
|
const _a = (0, usePromptSignInProps_1.usePromptSignInProps)(onClickSignIn), { requireSignIn } = _a, promptSignInProps = tslib_1.__rest(_a, ["requireSignIn"]);
|
15
17
|
const likesContextData = (0, react_1.useMemo)(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
|
16
18
|
const actualComponentMap = (0, useExtendedComponentMap_1.useExtendedComponentMap)(custom);
|
@@ -24,7 +26,7 @@ const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom,
|
|
24
26
|
getPosts,
|
25
27
|
pageCountForShowSupportButtons,
|
26
28
|
} },
|
27
|
-
react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
|
29
|
+
react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
|
28
30
|
metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
|
29
31
|
react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
|
30
32
|
react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
|
@@ -11,7 +11,9 @@ const LikesContext_1 = require("../../contexts/LikesContext");
|
|
11
11
|
const PostPageContext_1 = require("../../contexts/PostPageContext");
|
12
12
|
const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap");
|
13
13
|
const useLikes_1 = require("../../hooks/useLikes");
|
14
|
+
const SettingsContext_1 = require("../../contexts/SettingsContext");
|
14
15
|
const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
|
16
|
+
const { isAnimationEnabled } = (0, react_1.useContext)(SettingsContext_1.SettingsContext);
|
15
17
|
const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
|
16
18
|
hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
|
17
19
|
count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
|
@@ -39,7 +41,7 @@ const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings
|
|
39
41
|
: undefined,
|
40
42
|
shareOptions,
|
41
43
|
} },
|
42
|
-
react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings),
|
44
|
+
react_1.default.createElement(page_constructor_1.PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
|
43
45
|
metaData ? react_1.default.createElement(MetaWrapper_1.MetaWrapper, Object.assign({}, metaData)) : null,
|
44
46
|
react_1.default.createElement(page_constructor_1.PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
|
45
47
|
react_1.default.createElement(PromptSignIn_1.PromptSignIn, Object.assign({}, promptSignInProps))));
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
export interface SettingsContextProps {
|
3
3
|
addNavigationLinkForPages?: boolean;
|
4
|
+
isAnimationEnabled?: boolean;
|
4
5
|
getBlogPath?: (pathPrefix: string) => string;
|
5
6
|
}
|
6
7
|
export declare const SettingsContext: React.Context<SettingsContextProps>;
|
@@ -166,6 +166,9 @@ export declare const schemasForCustom: {
|
|
166
166
|
ariaLabel: {
|
167
167
|
type: string;
|
168
168
|
};
|
169
|
+
contain: {
|
170
|
+
type: string;
|
171
|
+
};
|
169
172
|
};
|
170
173
|
} & {
|
171
174
|
optionName: string;
|
@@ -367,11 +370,17 @@ export declare const schemasForCustom: {
|
|
367
370
|
ariaLabel: {
|
368
371
|
type: string;
|
369
372
|
};
|
373
|
+
contain: {
|
374
|
+
type: string;
|
375
|
+
};
|
370
376
|
};
|
371
377
|
};
|
372
378
|
youtube: {
|
373
379
|
type: string;
|
374
380
|
};
|
381
|
+
videoIframe: {
|
382
|
+
type: string;
|
383
|
+
};
|
375
384
|
parallax: {
|
376
385
|
type: string;
|
377
386
|
};
|
@@ -483,7 +492,8 @@ export declare const schemasForCustom: {
|
|
483
492
|
})[];
|
484
493
|
};
|
485
494
|
ratio: {
|
486
|
-
type: string;
|
495
|
+
type: string[];
|
496
|
+
pattern: string;
|
487
497
|
};
|
488
498
|
iframe: {
|
489
499
|
type: string;
|
@@ -1551,11 +1561,17 @@ export declare const schemasForCustom: {
|
|
1551
1561
|
ariaLabel: {
|
1552
1562
|
type: string;
|
1553
1563
|
};
|
1564
|
+
contain: {
|
1565
|
+
type: string;
|
1566
|
+
};
|
1554
1567
|
};
|
1555
1568
|
};
|
1556
1569
|
youtube: {
|
1557
1570
|
type: string;
|
1558
1571
|
};
|
1572
|
+
videoIframe: {
|
1573
|
+
type: string;
|
1574
|
+
};
|
1559
1575
|
parallax: {
|
1560
1576
|
type: string;
|
1561
1577
|
};
|
@@ -1667,7 +1683,8 @@ export declare const schemasForCustom: {
|
|
1667
1683
|
})[];
|
1668
1684
|
};
|
1669
1685
|
ratio: {
|
1670
|
-
type: string;
|
1686
|
+
type: string[];
|
1687
|
+
pattern: string;
|
1671
1688
|
};
|
1672
1689
|
iframe: {
|
1673
1690
|
type: string;
|
@@ -158,6 +158,9 @@ export declare const Header: {
|
|
158
158
|
ariaLabel: {
|
159
159
|
type: string;
|
160
160
|
};
|
161
|
+
contain: {
|
162
|
+
type: string;
|
163
|
+
};
|
161
164
|
};
|
162
165
|
} & {
|
163
166
|
optionName: string;
|
@@ -359,11 +362,17 @@ export declare const Header: {
|
|
359
362
|
ariaLabel: {
|
360
363
|
type: string;
|
361
364
|
};
|
365
|
+
contain: {
|
366
|
+
type: string;
|
367
|
+
};
|
362
368
|
};
|
363
369
|
};
|
364
370
|
youtube: {
|
365
371
|
type: string;
|
366
372
|
};
|
373
|
+
videoIframe: {
|
374
|
+
type: string;
|
375
|
+
};
|
367
376
|
parallax: {
|
368
377
|
type: string;
|
369
378
|
};
|
@@ -475,7 +484,8 @@ export declare const Header: {
|
|
475
484
|
})[];
|
476
485
|
};
|
477
486
|
ratio: {
|
478
|
-
type: string;
|
487
|
+
type: string[];
|
488
|
+
pattern: string;
|
479
489
|
};
|
480
490
|
iframe: {
|
481
491
|
type: string;
|
@@ -160,11 +160,17 @@ export declare const Media: {
|
|
160
160
|
ariaLabel: {
|
161
161
|
type: string;
|
162
162
|
};
|
163
|
+
contain: {
|
164
|
+
type: string;
|
165
|
+
};
|
163
166
|
};
|
164
167
|
};
|
165
168
|
youtube: {
|
166
169
|
type: string;
|
167
170
|
};
|
171
|
+
videoIframe: {
|
172
|
+
type: string;
|
173
|
+
};
|
168
174
|
parallax: {
|
169
175
|
type: string;
|
170
176
|
};
|
@@ -276,7 +282,8 @@ export declare const Media: {
|
|
276
282
|
})[];
|
277
283
|
};
|
278
284
|
ratio: {
|
279
|
-
type: string;
|
285
|
+
type: string[];
|
286
|
+
pattern: string;
|
280
287
|
};
|
281
288
|
iframe: {
|
282
289
|
type: string;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React, { useContext, useMemo, useState } from 'react';
|
2
2
|
import { useAnalytics } from '@gravity-ui/page-constructor';
|
3
|
-
import { Button, Icon, Select } from '@gravity-ui/uikit';
|
3
|
+
import { Button, Icon, MobileProvider, Select } from '@gravity-ui/uikit';
|
4
4
|
import { DefaultGoalIds } from '../../../../constants';
|
5
5
|
import { LikesContext } from '../../../../contexts/LikesContext';
|
6
6
|
import { MobileContext } from '../../../../contexts/MobileContext';
|
@@ -86,25 +86,26 @@ export const Controls = ({ handleLoadData, tags = [], services = [], queryParams
|
|
86
86
|
};
|
87
87
|
const tagsItems = useMemo(() => [{ value: 'empty', content: i18n(Keyset.AllTags) }, ...tags], [tags]);
|
88
88
|
const servicesItems = useMemo(() => (servicesInitial ? [...servicesInitial.split(',')] : []), [servicesInitial]);
|
89
|
-
return (React.createElement(
|
90
|
-
React.createElement("
|
91
|
-
|
92
|
-
React.createElement("div", { className: b('
|
93
|
-
React.createElement(
|
94
|
-
|
95
|
-
React.createElement(
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
React.createElement(
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
React.createElement(
|
108
|
-
React.createElement(
|
109
|
-
|
89
|
+
return (React.createElement(MobileProvider, { mobile: false },
|
90
|
+
React.createElement("div", { className: b('header') },
|
91
|
+
React.createElement("h1", { className: b('header-item', { title: true }) }, i18n(Keyset.Title)),
|
92
|
+
React.createElement("div", { className: b('header-item', { filters: true }) },
|
93
|
+
React.createElement("div", { className: b('filter-item') },
|
94
|
+
React.createElement(Search, { className: b('search'), placeholder: i18n(Keyset.Search), initialValue: search && typeof search === 'string' ? search : '', onSubmit: handleSearch })),
|
95
|
+
React.createElement("div", { className: b('filter-item') },
|
96
|
+
React.createElement(Select, { className: b('select'), size: "xl", options: tagsItems, defaultValue: [tagInitial], onUpdate: handleTagSelect, placeholder: i18n(Keyset.AllTags), popupClassName: b('popup', { isMobile }), renderControl: renderSwitcher({
|
97
|
+
initial: [tagInitial],
|
98
|
+
list: tagsItems,
|
99
|
+
defaultLabel: i18n(Keyset.AllTags),
|
100
|
+
}), disablePortal: true, virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption })),
|
101
|
+
services.length > 0 ? (React.createElement("div", { className: b('filter-item') },
|
102
|
+
React.createElement(Select, { className: b('select'), size: "xl", multiple: true, filterable: true, hasClear: true, disablePortal: true, options: services, defaultValue: servicesItems, popupClassName: b('popup', { isMobile }), onUpdate: handleServicesSelect, placeholder: i18n(Keyset.AllServices), renderControl: renderSwitcher({
|
103
|
+
initial: servicesItems,
|
104
|
+
list: services,
|
105
|
+
defaultLabel: i18n(Keyset.AllServices),
|
106
|
+
}), virtualizationThreshold: VIRTUALIZATION_THRESHOLD, renderOption: renderOption, renderFilter: renderFilter }))) : null,
|
107
|
+
hasLikes ? (React.createElement("div", { className: b('filter-item', { 'width-auto': true }) },
|
108
|
+
React.createElement(Button, { view: 'outlined', className: b('saved-only-button', { savedOnly }), size: "xl", onClick: handleSavedOnly, selected: savedOnly },
|
109
|
+
React.createElement(Icon, { data: Save, size: ICON_SIZE, className: b('icon', { savedOnly }) }),
|
110
|
+
i18n(Keyset.ActionSavedOnly)))) : null))));
|
110
111
|
};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { __rest } from "tslib";
|
2
|
-
import React, { useMemo } from 'react';
|
2
|
+
import React, { useContext, useMemo } from 'react';
|
3
3
|
import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
|
4
4
|
import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
|
5
5
|
import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
|
@@ -7,8 +7,10 @@ import { usePromptSignInProps } from '../../components/PromptSignIn/hooks/usePro
|
|
7
7
|
import { FeedContext } from '../../contexts/FeedContext';
|
8
8
|
import { LikesContext } from '../../contexts/LikesContext';
|
9
9
|
import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
|
10
|
+
import { SettingsContext } from '../../contexts/SettingsContext';
|
10
11
|
import './BlogPage.css';
|
11
12
|
export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
|
13
|
+
const { isAnimationEnabled } = useContext(SettingsContext);
|
12
14
|
const _a = usePromptSignInProps(onClickSignIn), { requireSignIn } = _a, promptSignInProps = __rest(_a, ["requireSignIn"]);
|
13
15
|
const likesContextData = useMemo(() => ({ toggleLike, hasLikes, isSignedInUser, requireSignIn }), [toggleLike, hasLikes, isSignedInUser, requireSignIn]);
|
14
16
|
const actualComponentMap = useExtendedComponentMap(custom);
|
@@ -22,7 +24,7 @@ export const BlogPage = ({ content, posts, tags, services, getPosts, metaData, c
|
|
22
24
|
getPosts,
|
23
25
|
pageCountForShowSupportButtons,
|
24
26
|
} },
|
25
|
-
React.createElement(PageConstructorProvider, Object.assign({}, settings),
|
27
|
+
React.createElement(PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
|
26
28
|
metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
|
27
29
|
React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
|
28
30
|
React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { __rest } from "tslib";
|
2
|
-
import React, { useMemo } from 'react';
|
2
|
+
import React, { useContext, useMemo } from 'react';
|
3
3
|
import { PageConstructor, PageConstructorProvider, } from '@gravity-ui/page-constructor';
|
4
4
|
import { MetaWrapper } from '../../components/MetaWrapper/MetaWrapper';
|
5
5
|
import { PromptSignIn } from '../../components/PromptSignIn/PromptSignIn';
|
@@ -8,8 +8,10 @@ import { LikesContext } from '../../contexts/LikesContext';
|
|
8
8
|
import { PostPageContext } from '../../contexts/PostPageContext';
|
9
9
|
import { useExtendedComponentMap } from '../../hooks/useExtendedComponentMap';
|
10
10
|
import { useLikes } from '../../hooks/useLikes';
|
11
|
+
import { SettingsContext } from '../../contexts/SettingsContext';
|
11
12
|
import './BlogPostPage.css';
|
12
13
|
export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, }) => {
|
14
|
+
const { isAnimationEnabled } = useContext(SettingsContext);
|
13
15
|
const { hasUserLike, likesCount, handleLike } = useLikes({
|
14
16
|
hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
|
15
17
|
count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
|
@@ -37,7 +39,7 @@ export const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, s
|
|
37
39
|
: undefined,
|
38
40
|
shareOptions,
|
39
41
|
} },
|
40
|
-
React.createElement(PageConstructorProvider, Object.assign({}, settings),
|
42
|
+
React.createElement(PageConstructorProvider, Object.assign({}, settings, { projectSettings: Object.assign(Object.assign({}, ((settings === null || settings === void 0 ? void 0 : settings.projectSettings) || {})), { isAnimationEnabled }) }),
|
41
43
|
metaData ? React.createElement(MetaWrapper, Object.assign({}, metaData)) : null,
|
42
44
|
React.createElement(PageConstructor, { content: content, custom: actualComponentMap, navigation: navigation }))),
|
43
45
|
React.createElement(PromptSignIn, Object.assign({}, promptSignInProps))));
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
export interface SettingsContextProps {
|
3
3
|
addNavigationLinkForPages?: boolean;
|
4
|
+
isAnimationEnabled?: boolean;
|
4
5
|
getBlogPath?: (pathPrefix: string) => string;
|
5
6
|
}
|
6
7
|
export declare const SettingsContext: React.Context<SettingsContextProps>;
|
@@ -166,6 +166,9 @@ export declare const schemasForCustom: {
|
|
166
166
|
ariaLabel: {
|
167
167
|
type: string;
|
168
168
|
};
|
169
|
+
contain: {
|
170
|
+
type: string;
|
171
|
+
};
|
169
172
|
};
|
170
173
|
} & {
|
171
174
|
optionName: string;
|
@@ -367,11 +370,17 @@ export declare const schemasForCustom: {
|
|
367
370
|
ariaLabel: {
|
368
371
|
type: string;
|
369
372
|
};
|
373
|
+
contain: {
|
374
|
+
type: string;
|
375
|
+
};
|
370
376
|
};
|
371
377
|
};
|
372
378
|
youtube: {
|
373
379
|
type: string;
|
374
380
|
};
|
381
|
+
videoIframe: {
|
382
|
+
type: string;
|
383
|
+
};
|
375
384
|
parallax: {
|
376
385
|
type: string;
|
377
386
|
};
|
@@ -483,7 +492,8 @@ export declare const schemasForCustom: {
|
|
483
492
|
})[];
|
484
493
|
};
|
485
494
|
ratio: {
|
486
|
-
type: string;
|
495
|
+
type: string[];
|
496
|
+
pattern: string;
|
487
497
|
};
|
488
498
|
iframe: {
|
489
499
|
type: string;
|
@@ -1551,11 +1561,17 @@ export declare const schemasForCustom: {
|
|
1551
1561
|
ariaLabel: {
|
1552
1562
|
type: string;
|
1553
1563
|
};
|
1564
|
+
contain: {
|
1565
|
+
type: string;
|
1566
|
+
};
|
1554
1567
|
};
|
1555
1568
|
};
|
1556
1569
|
youtube: {
|
1557
1570
|
type: string;
|
1558
1571
|
};
|
1572
|
+
videoIframe: {
|
1573
|
+
type: string;
|
1574
|
+
};
|
1559
1575
|
parallax: {
|
1560
1576
|
type: string;
|
1561
1577
|
};
|
@@ -1667,7 +1683,8 @@ export declare const schemasForCustom: {
|
|
1667
1683
|
})[];
|
1668
1684
|
};
|
1669
1685
|
ratio: {
|
1670
|
-
type: string;
|
1686
|
+
type: string[];
|
1687
|
+
pattern: string;
|
1671
1688
|
};
|
1672
1689
|
iframe: {
|
1673
1690
|
type: string;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@gravity-ui/blog-constructor",
|
3
|
-
"version": "6.4.
|
3
|
+
"version": "6.4.4-alpha.0",
|
4
4
|
"description": "Gravity UI Blog Constructor",
|
5
5
|
"license": "MIT",
|
6
6
|
"repository": {
|
@@ -56,7 +56,14 @@
|
|
56
56
|
"svgo:all": "svgo --config svgo.config.js -r -f assets",
|
57
57
|
"test": "jest --maxWorkers=50%",
|
58
58
|
"test:coverage": "jest --coverage",
|
59
|
-
"test:watch": "jest --watchAll --maxWorkers=25%"
|
59
|
+
"test:watch": "jest --watchAll --maxWorkers=25%",
|
60
|
+
"playwright": "playwright test --config=playwright/playwright.config.ts",
|
61
|
+
"playwright:update": "npm run playwright -- -u",
|
62
|
+
"playwright:clear-cache": "rm -rf ./playwright/.cache",
|
63
|
+
"playwright:docker": "./scripts/playwright-docker.sh 'npm run playwright'",
|
64
|
+
"playwright:docker:update": "./scripts/playwright-docker.sh 'npm run playwright:update'",
|
65
|
+
"playwright:docker:clear-cache": "./scripts/playwright-docker.sh clear-cache",
|
66
|
+
"playwright:install": "playwright install --with-deps"
|
60
67
|
},
|
61
68
|
"dependencies": {
|
62
69
|
"@bem-react/classname": "^1.6.0",
|
@@ -82,12 +89,14 @@
|
|
82
89
|
"@commitlint/config-conventional": "^17.4.3",
|
83
90
|
"@diplodoc/transform": "^4.10.8",
|
84
91
|
"@gravity-ui/eslint-config": "^3.1.1",
|
85
|
-
"@gravity-ui/page-constructor": "^5.
|
92
|
+
"@gravity-ui/page-constructor": "^5.27.0",
|
86
93
|
"@gravity-ui/prettier-config": "^1.1.0",
|
87
94
|
"@gravity-ui/stylelint-config": "^4.0.1",
|
88
95
|
"@gravity-ui/tsconfig": "^1.0.0",
|
89
96
|
"@gravity-ui/uikit": "^6.22.0",
|
90
97
|
"@jest/environment": "^29.7.0",
|
98
|
+
"@playwright/experimental-ct-react": "^1.45.3",
|
99
|
+
"@playwright/test": "^1.45.3",
|
91
100
|
"@storybook/addon-essentials": "^8.0.5",
|
92
101
|
"@storybook/addon-mdx-gfm": "^8.0.5",
|
93
102
|
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
|
@@ -106,6 +115,7 @@
|
|
106
115
|
"@types/react-helmet": "^6.1.5",
|
107
116
|
"@types/ua-parser-js": "^0.7.36",
|
108
117
|
"@types/uuid": "^9.0.7",
|
118
|
+
"@vitejs/plugin-react": "^4.3.1",
|
109
119
|
"eslint": "^8.34.0",
|
110
120
|
"eslint-plugin-no-not-accumulator-reassign": "^0.1.0",
|
111
121
|
"eslint-plugin-testing-library": "^5.9.1",
|
@@ -132,7 +142,9 @@
|
|
132
142
|
"storybook": "^8.0.5",
|
133
143
|
"stylelint": "^15.11.0",
|
134
144
|
"ts-jest": "^29.0.5",
|
135
|
-
"typescript": "^4.9.3"
|
145
|
+
"typescript": "^4.9.3",
|
146
|
+
"vite-plugin-commonjs": "^0.10.3",
|
147
|
+
"vite-plugin-svgr": "^4.2.0"
|
136
148
|
},
|
137
149
|
"lint-staged": {
|
138
150
|
"*.{css,scss}": [
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { MarkdownItPluginCb } from '@diplodoc/transform/lib/plugins/typings';
|
2
2
|
import { Lang } from '@gravity-ui/uikit';
|
3
3
|
type TypographyConfigType = {
|
4
|
-
[x: string]: Record<string, unknown
|
4
|
+
[x: string]: Record<string, unknown> | Record<string, unknown>[];
|
5
5
|
};
|
6
6
|
type TransformPageContentPropsType = {
|
7
7
|
content: string;
|