@gravity-ui/page-constructor 1.26.0-alpha.2 → 1.26.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/CHANGELOG.md +22 -0
- package/build/cjs/blocks/FilterBlock/FilterBlock.css +1 -5
- package/build/cjs/blocks/Header/Header.js +2 -5
- package/build/cjs/blocks/Icons/Icons.js +1 -1
- package/build/cjs/blocks/Share/Share.js +1 -2
- package/build/cjs/blocks/Tabs/Tabs.css +1 -5
- package/build/cjs/components/BackLink/BackLink.js +1 -2
- package/build/cjs/components/Button/Button.js +1 -2
- package/build/cjs/components/FileLink/FileLink.js +1 -2
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
- package/build/cjs/components/Link/Link.js +1 -2
- package/build/cjs/components/ReactPlayer/ReactPlayer.js +3 -1
- package/build/cjs/components/ReactPlayer/utils.d.ts +1 -0
- package/build/cjs/components/ReactPlayer/utils.js +23 -0
- package/build/cjs/components/Title/Title.js +1 -2
- package/build/cjs/components/index.d.ts +0 -1
- package/build/cjs/components/index.js +1 -3
- package/build/cjs/models/constructor-items/common.d.ts +0 -2
- package/build/cjs/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
- package/build/cjs/navigation/components/SocialIcon/SocialIcon.js +1 -1
- package/build/cjs/sub-blocks/Quote/Quote.js +1 -1
- package/build/cjs/sub-blocks/Quote/schema.d.ts +3 -0
- package/build/cjs/sub-blocks/Quote/schema.js +2 -0
- package/build/esm/blocks/FilterBlock/FilterBlock.css +1 -5
- package/build/esm/blocks/Header/Header.js +3 -6
- package/build/esm/blocks/Icons/Icons.js +2 -2
- package/build/esm/blocks/Share/Share.js +1 -2
- package/build/esm/blocks/Tabs/Tabs.css +1 -5
- package/build/esm/components/BackLink/BackLink.js +1 -2
- package/build/esm/components/Button/Button.js +1 -2
- package/build/esm/components/FileLink/FileLink.js +1 -2
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
- package/build/esm/components/Link/Link.js +1 -2
- package/build/esm/components/ReactPlayer/ReactPlayer.js +3 -1
- package/build/esm/components/ReactPlayer/utils.d.ts +1 -0
- package/build/esm/components/ReactPlayer/utils.js +19 -0
- package/build/esm/components/Title/Title.js +1 -2
- package/build/esm/components/index.d.ts +0 -1
- package/build/esm/components/index.js +0 -1
- package/build/esm/models/constructor-items/common.d.ts +0 -2
- package/build/esm/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
- package/build/esm/navigation/components/SocialIcon/SocialIcon.js +2 -2
- package/build/esm/sub-blocks/Quote/Quote.js +2 -2
- package/build/esm/sub-blocks/Quote/schema.d.ts +3 -0
- package/build/esm/sub-blocks/Quote/schema.js +2 -0
- package/package.json +2 -2
- package/server/models/constructor-items/common.d.ts +0 -2
- package/styles/mixins.scss +1 -5
- package/build/cjs/components/LinkBase/LinkBase.d.ts +0 -3
- package/build/cjs/components/LinkBase/LinkBase.js +0 -18
- package/build/esm/components/LinkBase/LinkBase.d.ts +0 -3
- package/build/esm/components/LinkBase/LinkBase.js +0 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.26.0](https://github.com/gravity-ui/page-constructor/compare/v1.25.2...v1.26.0) (2023-03-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* dropdown a ReactPlayer version ([#254](https://github.com/gravity-ui/page-constructor/issues/254)) ([#257](https://github.com/gravity-ui/page-constructor/issues/257)) ([4fffe1b](https://github.com/gravity-ui/page-constructor/commit/4fffe1b6c88f8bd3d8583606d4d2edf1ab18eafb))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add tag untagged ([ce9efcf](https://github.com/gravity-ui/page-constructor/commit/ce9efcfc74eaad2cbcf3cf79494f577b0eda09b3))
|
|
14
|
+
* **package:** up version ([#241](https://github.com/gravity-ui/page-constructor/issues/241)) ([9b6d3f2](https://github.com/gravity-ui/page-constructor/commit/9b6d3f2ecace4e1e51c52a4c422aa44850bbefec))
|
|
15
|
+
* remove description and inputs ([000a85e](https://github.com/gravity-ui/page-constructor/commit/000a85ee6d1d9fedb0cef74d990be4065a750efb))
|
|
16
|
+
* try to release version ([6fc35f2](https://github.com/gravity-ui/page-constructor/commit/6fc35f2043097f883b9ad87bb348f73cc138be1e))
|
|
17
|
+
|
|
18
|
+
## [1.25.3](https://github.com/gravity-ui/page-constructor/compare/v1.25.2...v1.25.3) (2023-03-27)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **Tabs:** wrap tabs on desktop ([#237](https://github.com/gravity-ui/page-constructor/issues/237)) ([ac7dd3d](https://github.com/gravity-ui/page-constructor/commit/ac7dd3d3573c6d633d39f88507e2bfeeb41b4f8c))
|
|
24
|
+
|
|
3
25
|
## [1.25.2](https://github.com/gravity-ui/page-constructor/compare/v1.25.1...v1.25.2) (2023-03-21)
|
|
4
26
|
|
|
5
27
|
|
|
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
|
|
|
16
16
|
.pc-filter-block__tabs {
|
|
17
17
|
margin-bottom: 0;
|
|
18
18
|
display: flex;
|
|
19
|
-
flex-wrap:
|
|
19
|
+
flex-wrap: wrap;
|
|
20
20
|
justify-content: flex-start;
|
|
21
|
-
overflow: auto;
|
|
22
21
|
}
|
|
23
22
|
.pc-filter-block__tabs_centered {
|
|
24
|
-
display: flex;
|
|
25
23
|
justify-content: center;
|
|
26
|
-
flex-wrap: wrap;
|
|
27
24
|
}
|
|
28
25
|
@media (max-width: 769px) {
|
|
29
26
|
.pc-filter-block__tabs {
|
|
30
|
-
display: flex;
|
|
31
27
|
flex-wrap: nowrap;
|
|
32
28
|
justify-content: flex-start;
|
|
33
29
|
overflow: auto;
|
|
@@ -59,11 +59,8 @@ const HeaderBlock = (props) => {
|
|
|
59
59
|
description && (react_1.default.createElement("h5", { className: b('description') },
|
|
60
60
|
react_1.default.createElement(YFMWrapper_1.default, { content: description, modifiers: { constructor: true } }))),
|
|
61
61
|
buttons && (react_1.default.createElement("div", { className: b('buttons'), "data-qa": "header-buttons" }, buttons &&
|
|
62
|
-
buttons.map((button, index) => (
|
|
63
|
-
|
|
64
|
-
react_1.default.createElement(components_1.Button, Object.assign({ key: index, className: b('button'), size: "xl" }, button))
|
|
65
|
-
// </RouterLink>
|
|
66
|
-
)))),
|
|
62
|
+
buttons.map((button, index) => (react_1.default.createElement(components_1.RouterLink, { href: button.url, key: index },
|
|
63
|
+
react_1.default.createElement(components_1.Button, Object.assign({ key: index, className: b('button'), size: "xl" }, button))))))),
|
|
67
64
|
children))),
|
|
68
65
|
hasRightSideImage && (react_1.default.createElement(components_1.Media, { className: b('media', { [curImageSize]: true }), videoClassName: b('video'), imageClassName: b('image'), video: videoThemed, image: imageThemed })))))));
|
|
69
66
|
};
|
|
@@ -10,7 +10,7 @@ const Icons = ({ title, size = 's', items }) => {
|
|
|
10
10
|
const { hostname } = (0, react_1.useContext)(locationContext_1.LocationContext);
|
|
11
11
|
return (react_1.default.createElement("div", { className: b({ size }) },
|
|
12
12
|
title && react_1.default.createElement(components_1.BlockHeader, { className: b('header'), title: title, colSizes: { all: 12 } }),
|
|
13
|
-
items.map((item) => (react_1.default.createElement(
|
|
13
|
+
items.map((item) => (react_1.default.createElement("a", Object.assign({ className: b('item'), key: item.url, href: item.url }, (0, utils_1.getLinkProps)(item.url, hostname)),
|
|
14
14
|
react_1.default.createElement(components_1.Image, { className: b('image'), src: item.src }),
|
|
15
15
|
react_1.default.createElement("p", { className: b('text') }, item.text))))));
|
|
16
16
|
};
|
|
@@ -13,7 +13,6 @@ const Twitter_1 = require("../../icons/Twitter");
|
|
|
13
13
|
const Linkedin_1 = require("../../icons/Linkedin");
|
|
14
14
|
const Vk_1 = require("../../icons/Vk");
|
|
15
15
|
const Telegram_1 = require("../../icons/Telegram");
|
|
16
|
-
const components_1 = require("../../components");
|
|
17
16
|
const icons = {
|
|
18
17
|
facebook: Facebook_1.Facebook,
|
|
19
18
|
twitter: Twitter_1.Twitter,
|
|
@@ -32,7 +31,7 @@ const Share = ({ items, title }) => {
|
|
|
32
31
|
const url = (0, utils_1.getAbsolutePath)(hostname, pathname);
|
|
33
32
|
const socialUrl = (0, utils_1.getShareLink)(url, type);
|
|
34
33
|
const icon = icons[type];
|
|
35
|
-
return (react_1.default.createElement(uikit_1.Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl,
|
|
34
|
+
return (react_1.default.createElement(uikit_1.Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && react_1.default.createElement(uikit_1.Icon, { data: icon, size: 24, className: b('icon', { type }) })));
|
|
36
35
|
}))));
|
|
37
36
|
};
|
|
38
37
|
exports.default = Share;
|
|
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
|
|
|
16
16
|
.pc-tabs-block__tabs {
|
|
17
17
|
margin-bottom: 20px;
|
|
18
18
|
display: flex;
|
|
19
|
-
flex-wrap:
|
|
19
|
+
flex-wrap: wrap;
|
|
20
20
|
justify-content: flex-start;
|
|
21
|
-
overflow: auto;
|
|
22
21
|
}
|
|
23
22
|
.pc-tabs-block__tabs_centered {
|
|
24
|
-
display: flex;
|
|
25
23
|
justify-content: center;
|
|
26
|
-
flex-wrap: wrap;
|
|
27
24
|
}
|
|
28
25
|
@media (max-width: 769px) {
|
|
29
26
|
.pc-tabs-block__tabs {
|
|
30
|
-
display: flex;
|
|
31
27
|
flex-wrap: nowrap;
|
|
32
28
|
justify-content: flex-start;
|
|
33
29
|
overflow: auto;
|
|
@@ -7,7 +7,6 @@ const icons_1 = require("../../icons");
|
|
|
7
7
|
const locationContext_1 = require("../../context/locationContext");
|
|
8
8
|
const hooks_1 = require("../../hooks");
|
|
9
9
|
const models_1 = require("../../models");
|
|
10
|
-
const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
|
|
11
10
|
function BackLink(props) {
|
|
12
11
|
const { history } = (0, react_1.useContext)(locationContext_1.LocationContext);
|
|
13
12
|
const { url, title, theme = 'default', size = 'l', className, shouldHandleBackAction = false, onClick, } = props;
|
|
@@ -27,7 +26,7 @@ function BackLink(props) {
|
|
|
27
26
|
history.push({ pathname: url });
|
|
28
27
|
}
|
|
29
28
|
}, [handleAnalytics, history, onClick, url]);
|
|
30
|
-
return (react_1.default.createElement(uikit_1.Button, {
|
|
29
|
+
return (react_1.default.createElement(uikit_1.Button, { className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
|
|
31
30
|
react_1.default.createElement(uikit_1.Icon, { data: icons_1.ArrowSidebar, size: 24 }),
|
|
32
31
|
react_1.default.createElement("span", null, title)));
|
|
33
32
|
}
|
|
@@ -10,7 +10,6 @@ const localeContext_1 = require("../../context/localeContext/localeContext");
|
|
|
10
10
|
const useMetrika_1 = require("../../hooks/useMetrika");
|
|
11
11
|
const hooks_1 = require("../../hooks");
|
|
12
12
|
const icons_1 = require("../../icons");
|
|
13
|
-
const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
|
|
14
13
|
const b = (0, utils_1.block)('button-block');
|
|
15
14
|
const Button = (props) => {
|
|
16
15
|
const handleMetrika = (0, useMetrika_1.useMetrika)();
|
|
@@ -43,7 +42,7 @@ const Button = (props) => {
|
|
|
43
42
|
image = undefined;
|
|
44
43
|
}
|
|
45
44
|
const buttonTheme = theme === 'scale' ? 'accent' : theme;
|
|
46
|
-
return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined
|
|
45
|
+
return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined }, buttonProps),
|
|
47
46
|
icon && buttonImg.position === 'left' ? icon : null,
|
|
48
47
|
react_1.default.createElement("span", { className: b('content') },
|
|
49
48
|
image && buttonImg.position === 'left' ? image : null,
|
|
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const utils_1 = require("../../utils");
|
|
6
6
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
7
7
|
const locationContext_1 = require("../../context/locationContext");
|
|
8
|
-
const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
|
|
9
8
|
const b = (0, utils_1.block)('file-link');
|
|
10
9
|
const FIGMA_URL = 'https://www.figma.com';
|
|
11
10
|
var FileExtension;
|
|
@@ -32,6 +31,6 @@ const FileLink = (props) => {
|
|
|
32
31
|
return (react_1.default.createElement("div", { className: b({ ext: fileExt, type, size: textSize, theme }, className) },
|
|
33
32
|
Object.values(FileExtension).includes(fileExt) && (react_1.default.createElement("div", { className: b('file-label') }, fileExt)),
|
|
34
33
|
react_1.default.createElement("div", { className: b('link') },
|
|
35
|
-
react_1.default.createElement(
|
|
34
|
+
react_1.default.createElement("a", Object.assign({ href: href }, (0, utils_1.getLinkProps)(href, hostname), { onClick: onClick }), text))));
|
|
36
35
|
};
|
|
37
36
|
exports.default = FileLink;
|
|
@@ -4,7 +4,6 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
5
|
const utils_1 = require("../../utils");
|
|
6
6
|
const useMetrika_1 = require("../../hooks/useMetrika");
|
|
7
|
-
const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
|
|
8
7
|
const b = (0, utils_1.block)('header-breadcrumbs');
|
|
9
8
|
function HeaderBreadcrumbs(props) {
|
|
10
9
|
const { items, metrikaGoals, pixelEvents, theme = 'light', className } = props;
|
|
@@ -13,6 +12,6 @@ function HeaderBreadcrumbs(props) {
|
|
|
13
12
|
handleMetrika({ metrikaGoals, pixelEvents });
|
|
14
13
|
};
|
|
15
14
|
return (react_1.default.createElement("div", { className: b({ theme }, className) }, items.map((item) => (react_1.default.createElement("div", { className: b('item'), key: item.url },
|
|
16
|
-
react_1.default.createElement(
|
|
15
|
+
react_1.default.createElement("a", { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
|
|
17
16
|
}
|
|
18
17
|
exports.default = HeaderBreadcrumbs;
|
|
@@ -6,7 +6,6 @@ const uikit_1 = require("@gravity-ui/uikit");
|
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
7
|
const models_1 = require("../../models");
|
|
8
8
|
const icons_1 = require("../../icons");
|
|
9
|
-
const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
|
|
10
9
|
const FileLink_1 = tslib_1.__importDefault(require("../FileLink/FileLink"));
|
|
11
10
|
const BackLink_1 = tslib_1.__importDefault(require("../BackLink/BackLink"));
|
|
12
11
|
const localeContext_1 = require("../../context/localeContext/localeContext");
|
|
@@ -49,7 +48,7 @@ const LinkBlock = (props) => {
|
|
|
49
48
|
case 'normal': {
|
|
50
49
|
const linkProps = (0, utils_1.getLinkProps)(url, hostname, target);
|
|
51
50
|
const content = children || text;
|
|
52
|
-
return (react_1.default.createElement(
|
|
51
|
+
return (react_1.default.createElement("a", Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (react_1.default.createElement(react_1.Fragment, null,
|
|
53
52
|
react_1.default.createElement("span", { className: b('content') }, content),
|
|
54
53
|
WORD_JOINER_SYM,
|
|
55
54
|
react_1.default.createElement(uikit_1.Icon, { className: b('arrow'), data: icons_1.Chevron, size: getArrowSize(textSize) }))) : (content)));
|
|
@@ -14,6 +14,7 @@ const metrikaContext_1 = require("../../context/metrikaContext");
|
|
|
14
14
|
const mobileContext_1 = require("../../context/mobileContext");
|
|
15
15
|
const hooks_1 = require("../../hooks");
|
|
16
16
|
const icons_1 = require("../../icons");
|
|
17
|
+
const utils_2 = require("./utils");
|
|
17
18
|
const b = (0, utils_1.block)('ReactPlayer');
|
|
18
19
|
const FPS = 60;
|
|
19
20
|
// eslint-disable-next-line react/display-name
|
|
@@ -35,6 +36,7 @@ exports.ReactPlayerBlock = react_1.default.forwardRef((props, originRef) => {
|
|
|
35
36
|
const [started, setStarted] = (0, react_1.useState)(autoPlay);
|
|
36
37
|
const [paused, setPaused] = (0, react_1.useState)(false);
|
|
37
38
|
const [ended, setEnded] = (0, react_1.useState)(false);
|
|
39
|
+
const videoSrc = (0, react_1.useMemo)(() => (0, utils_2.checkYoutubeVideos)(src), [src]);
|
|
38
40
|
const eventsArray = (0, react_1.useMemo)(() => {
|
|
39
41
|
if (analyticsEvents) {
|
|
40
42
|
return Array.isArray(analyticsEvents) ? analyticsEvents : [analyticsEvents];
|
|
@@ -193,7 +195,7 @@ exports.ReactPlayerBlock = react_1.default.forwardRef((props, originRef) => {
|
|
|
193
195
|
}, elapsedTimePercent: elapsedTimePercent }));
|
|
194
196
|
}, [controls, isPlaying, customBarControlsClassName, changeMute]);
|
|
195
197
|
return (react_1.default.createElement("div", { className: b({ wrapper: !currentHeight }, className), ref: ref, onClick: handleClick },
|
|
196
|
-
react_1.default.createElement(react_player_1.default, { className: b('player'), url:
|
|
198
|
+
react_1.default.createElement(react_player_1.default, { className: b('player'), url: videoSrc, muted: muted, controls: controls === models_1.MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
|
|
197
199
|
renderCustomBarControls(muted, playedPercent)));
|
|
198
200
|
});
|
|
199
201
|
function getHeight(width) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const checkYoutubeVideos: (src: string | string[]) => string | string[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkYoutubeVideos = void 0;
|
|
4
|
+
// the file serves to support live video with react-player@2.9
|
|
5
|
+
const LIVE_YUOTUBE_VIDEO_REGEX = /(?:youtu\.be\/live\/|youtube(?:-nocookie)?\.com\/(?:live\/))((\w|-){11})/;
|
|
6
|
+
const YOUTUBE_VIDEO_TEMPLATE = 'https://www.youtube.com/watch?v=';
|
|
7
|
+
const checkYoutubeVideos = (src) => {
|
|
8
|
+
if (Array.isArray(src)) {
|
|
9
|
+
return src.map((videoUrl) => {
|
|
10
|
+
var _a;
|
|
11
|
+
if (LIVE_YUOTUBE_VIDEO_REGEX.test(videoUrl)) {
|
|
12
|
+
const youtubeLiveId = (_a = videoUrl.match(LIVE_YUOTUBE_VIDEO_REGEX)) === null || _a === void 0 ? void 0 : _a[1];
|
|
13
|
+
if (!youtubeLiveId) {
|
|
14
|
+
return videoUrl;
|
|
15
|
+
}
|
|
16
|
+
return `${YOUTUBE_VIDEO_TEMPLATE}${youtubeLiveId}`;
|
|
17
|
+
}
|
|
18
|
+
return videoUrl;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return src;
|
|
22
|
+
};
|
|
23
|
+
exports.checkYoutubeVideos = checkYoutubeVideos;
|
|
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
7
|
const Anchor_1 = tslib_1.__importDefault(require("../Anchor/Anchor"));
|
|
8
|
-
const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
|
|
9
8
|
const __1 = require("../");
|
|
10
9
|
const locationContext_1 = require("../../context/locationContext");
|
|
11
10
|
const mobileContext_1 = require("../../context/mobileContext");
|
|
@@ -41,7 +40,7 @@ const Title = (props) => {
|
|
|
41
40
|
content = textMarkup;
|
|
42
41
|
}
|
|
43
42
|
else if (url) {
|
|
44
|
-
content = (react_1.default.createElement(
|
|
43
|
+
content = (react_1.default.createElement("a", Object.assign({ className: b('link'), href: url }, (0, utils_1.getLinkProps)(url, hostname), { onClick: onClick }), insideClickableContent));
|
|
45
44
|
}
|
|
46
45
|
else if (onClick) {
|
|
47
46
|
content = (react_1.default.createElement("span", { className: b('link'), onClick: onClick }, insideClickableContent));
|
|
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
|
|
|
17
17
|
export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
|
|
18
18
|
export { default as Image } from './Image/Image';
|
|
19
19
|
export { default as Link } from './Link/Link';
|
|
20
|
-
export { default as LinkBase } from './LinkBase/LinkBase';
|
|
21
20
|
export { default as Links } from './Link/Links';
|
|
22
21
|
export { default as Media } from './Media/Media';
|
|
23
22
|
export { default as OutsideClick } from './OutsideClick/OutsideClick';
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FullScreenMedia = exports.MetaInfo = exports.HTML = exports.RouterLink = exports.Author = exports.OverflowScroller = exports.Control = exports.YandexForm = exports.YFMWrapper = exports.VideoBlock = exports.UnpublishedLabel = exports.ToggleArrow = exports.Title = exports.Table = exports.ReactPlayer = exports.OutsideClick = exports.Media = exports.Links = exports.
|
|
6
|
+
exports.FullScreenMedia = exports.MetaInfo = exports.HTML = exports.RouterLink = exports.Author = exports.OverflowScroller = exports.Control = exports.YandexForm = exports.YFMWrapper = exports.VideoBlock = exports.UnpublishedLabel = exports.ToggleArrow = exports.Title = exports.Table = exports.ReactPlayer = exports.OutsideClick = exports.Media = exports.Links = exports.Link = exports.Image = exports.HeightCalculator = exports.HeaderBreadcrumbs = exports.FullWidthBackground = exports.FullscreenImage = exports.Foldable = exports.FileLink = exports.ErrorWrapper = exports.CardBase = exports.Button = exports.BlockHeader = exports.BlockBase = exports.BalancedMasonry = exports.BackLink = exports.BackgroundMedia = exports.BackgroundImage = exports.AnimateBlock = exports.Anchor = void 0;
|
|
7
7
|
var Anchor_1 = require("./Anchor/Anchor");
|
|
8
8
|
Object.defineProperty(exports, "Anchor", { enumerable: true, get: function () { return __importDefault(Anchor_1).default; } });
|
|
9
9
|
var AnimateBlock_1 = require("./AnimateBlock/AnimateBlock");
|
|
@@ -42,8 +42,6 @@ var Image_1 = require("./Image/Image");
|
|
|
42
42
|
Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return __importDefault(Image_1).default; } });
|
|
43
43
|
var Link_1 = require("./Link/Link");
|
|
44
44
|
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return __importDefault(Link_1).default; } });
|
|
45
|
-
var LinkBase_1 = require("./LinkBase/LinkBase");
|
|
46
|
-
Object.defineProperty(exports, "LinkBase", { enumerable: true, get: function () { return __importDefault(LinkBase_1).default; } });
|
|
47
45
|
var Links_1 = require("./Link/Links");
|
|
48
46
|
Object.defineProperty(exports, "Links", { enumerable: true, get: function () { return __importDefault(Links_1).default; } });
|
|
49
47
|
var Media_1 = require("./Media/Media");
|
|
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
|
|
|
111
111
|
controls?: MediaVideoControlsType;
|
|
112
112
|
metrika?: MetrikaVideo;
|
|
113
113
|
}
|
|
114
|
-
export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
|
|
115
|
-
}
|
|
116
114
|
export interface LinkProps extends AnalyticsEventsBase, Stylable {
|
|
117
115
|
url: string;
|
|
118
116
|
text?: string;
|
package/build/cjs/navigation/components/NavigationItem/components/GithubButton/GithubButton.js
CHANGED
|
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const utils_1 = require("../../../../../utils");
|
|
7
7
|
const models_1 = require("../../../../../models");
|
|
8
|
-
const components_1 = require("../../../../../components");
|
|
9
8
|
const b = (0, utils_1.block)('github-button');
|
|
10
9
|
const DEFAULT_LABEL = 'Stars on GitHub';
|
|
11
10
|
/* More information about github-buttons in https://buttons.github.io/ */
|
|
@@ -43,6 +42,6 @@ const GithubButton = ({ text, url, className, label, size, icon, }) => {
|
|
|
43
42
|
}, []);
|
|
44
43
|
return (react_1.default.createElement("div", { className: b(null, className) },
|
|
45
44
|
react_1.default.createElement("span", { ref: containerRef },
|
|
46
|
-
react_1.default.createElement(
|
|
45
|
+
react_1.default.createElement("a", Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': models_1.NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
|
|
47
46
|
};
|
|
48
47
|
exports.GithubButton = GithubButton;
|
|
@@ -8,7 +8,7 @@ const utils_2 = require("../../../components/Media/Image/utils");
|
|
|
8
8
|
const b = (0, utils_1.block)('social-icon');
|
|
9
9
|
const SocialIcon = ({ icon, url, className }) => {
|
|
10
10
|
const iconData = (0, utils_2.getMediaImage)(icon);
|
|
11
|
-
return (react_1.default.createElement(
|
|
11
|
+
return (react_1.default.createElement("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
|
|
12
12
|
react_1.default.createElement(components_1.Image, Object.assign({ className: b('icon') }, iconData))));
|
|
13
13
|
};
|
|
14
14
|
exports.default = SocialIcon;
|
|
@@ -19,7 +19,7 @@ const Quote = (props) => {
|
|
|
19
19
|
const handleButtonClick = (0, react_1.useCallback)(() => handleAnalytics(), [handleAnalytics]);
|
|
20
20
|
const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
|
|
21
21
|
author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
|
|
22
|
-
url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url,
|
|
22
|
+
url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
|
|
23
23
|
return (react_1.default.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
|
|
24
24
|
react_1.default.createElement("div", { key: text, className: b('content-wrapper') },
|
|
25
25
|
react_1.default.createElement("div", null,
|
|
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
|
|
|
16
16
|
.pc-filter-block__tabs {
|
|
17
17
|
margin-bottom: 0;
|
|
18
18
|
display: flex;
|
|
19
|
-
flex-wrap:
|
|
19
|
+
flex-wrap: wrap;
|
|
20
20
|
justify-content: flex-start;
|
|
21
|
-
overflow: auto;
|
|
22
21
|
}
|
|
23
22
|
.pc-filter-block__tabs_centered {
|
|
24
|
-
display: flex;
|
|
25
23
|
justify-content: center;
|
|
26
|
-
flex-wrap: wrap;
|
|
27
24
|
}
|
|
28
25
|
@media (max-width: 769px) {
|
|
29
26
|
.pc-filter-block__tabs {
|
|
30
|
-
display: flex;
|
|
31
27
|
flex-wrap: nowrap;
|
|
32
28
|
justify-content: flex-start;
|
|
33
29
|
overflow: auto;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
import { block, getThemedValue } from '../../utils';
|
|
3
|
-
import { Button, Media, HTML } from '../../components';
|
|
3
|
+
import { Button, Media, RouterLink, HTML } from '../../components';
|
|
4
4
|
import { Grid, Row, Col } from '../../grid';
|
|
5
5
|
import { getImageSize, getTitleSizes, titleWithImageSizes } from './utils';
|
|
6
6
|
import { MobileContext } from '../../context/mobileContext';
|
|
@@ -56,11 +56,8 @@ export const HeaderBlock = (props) => {
|
|
|
56
56
|
description && (React.createElement("h5", { className: b('description') },
|
|
57
57
|
React.createElement(YFMWrapper, { content: description, modifiers: { constructor: true } }))),
|
|
58
58
|
buttons && (React.createElement("div", { className: b('buttons'), "data-qa": "header-buttons" }, buttons &&
|
|
59
|
-
buttons.map((button, index) => (
|
|
60
|
-
|
|
61
|
-
React.createElement(Button, Object.assign({ key: index, className: b('button'), size: "xl" }, button))
|
|
62
|
-
// </RouterLink>
|
|
63
|
-
)))),
|
|
59
|
+
buttons.map((button, index) => (React.createElement(RouterLink, { href: button.url, key: index },
|
|
60
|
+
React.createElement(Button, Object.assign({ key: index, className: b('button'), size: "xl" }, button))))))),
|
|
64
61
|
children))),
|
|
65
62
|
hasRightSideImage && (React.createElement(Media, { className: b('media', { [curImageSize]: true }), videoClassName: b('video'), imageClassName: b('image'), video: videoThemed, image: imageThemed })))))));
|
|
66
63
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
import { block, getLinkProps } from '../../utils';
|
|
3
|
-
import { BlockHeader, Image
|
|
3
|
+
import { BlockHeader, Image } from '../../components';
|
|
4
4
|
import { LocationContext } from '../../context/locationContext';
|
|
5
5
|
import './Icons.css';
|
|
6
6
|
const b = block('icons-block');
|
|
@@ -8,7 +8,7 @@ const Icons = ({ title, size = 's', items }) => {
|
|
|
8
8
|
const { hostname } = useContext(LocationContext);
|
|
9
9
|
return (React.createElement("div", { className: b({ size }) },
|
|
10
10
|
title && React.createElement(BlockHeader, { className: b('header'), title: title, colSizes: { all: 12 } }),
|
|
11
|
-
items.map((item) => (React.createElement(
|
|
11
|
+
items.map((item) => (React.createElement("a", Object.assign({ className: b('item'), key: item.url, href: item.url }, getLinkProps(item.url, hostname)),
|
|
12
12
|
React.createElement(Image, { className: b('image'), src: item.src }),
|
|
13
13
|
React.createElement("p", { className: b('text') }, item.text))))));
|
|
14
14
|
};
|
|
@@ -10,7 +10,6 @@ import { Twitter } from '../../icons/Twitter';
|
|
|
10
10
|
import { Linkedin } from '../../icons/Linkedin';
|
|
11
11
|
import { Vk } from '../../icons/Vk';
|
|
12
12
|
import { Telegram } from '../../icons/Telegram';
|
|
13
|
-
import { RouterLink } from '../../components';
|
|
14
13
|
import './Share.css';
|
|
15
14
|
const icons = {
|
|
16
15
|
facebook: Facebook,
|
|
@@ -30,7 +29,7 @@ const Share = ({ items, title }) => {
|
|
|
30
29
|
const url = getAbsolutePath(hostname, pathname);
|
|
31
30
|
const socialUrl = getShareLink(url, type);
|
|
32
31
|
const icon = icons[type];
|
|
33
|
-
return (React.createElement(Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl,
|
|
32
|
+
return (React.createElement(Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && React.createElement(Icon, { data: icon, size: 24, className: b('icon', { type }) })));
|
|
34
33
|
}))));
|
|
35
34
|
};
|
|
36
35
|
export default Share;
|
|
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
|
|
|
16
16
|
.pc-tabs-block__tabs {
|
|
17
17
|
margin-bottom: 20px;
|
|
18
18
|
display: flex;
|
|
19
|
-
flex-wrap:
|
|
19
|
+
flex-wrap: wrap;
|
|
20
20
|
justify-content: flex-start;
|
|
21
|
-
overflow: auto;
|
|
22
21
|
}
|
|
23
22
|
.pc-tabs-block__tabs_centered {
|
|
24
|
-
display: flex;
|
|
25
23
|
justify-content: center;
|
|
26
|
-
flex-wrap: wrap;
|
|
27
24
|
}
|
|
28
25
|
@media (max-width: 769px) {
|
|
29
26
|
.pc-tabs-block__tabs {
|
|
30
|
-
display: flex;
|
|
31
27
|
flex-wrap: nowrap;
|
|
32
28
|
justify-content: flex-start;
|
|
33
29
|
overflow: auto;
|
|
@@ -4,7 +4,6 @@ import { ArrowSidebar } from '../../icons';
|
|
|
4
4
|
import { LocationContext } from '../../context/locationContext';
|
|
5
5
|
import { useAnalytics } from '../../hooks';
|
|
6
6
|
import { DefaultEventNames } from '../../models';
|
|
7
|
-
import RouterLink from '../RouterLink/RouterLink';
|
|
8
7
|
export default function BackLink(props) {
|
|
9
8
|
const { history } = useContext(LocationContext);
|
|
10
9
|
const { url, title, theme = 'default', size = 'l', className, shouldHandleBackAction = false, onClick, } = props;
|
|
@@ -24,7 +23,7 @@ export default function BackLink(props) {
|
|
|
24
23
|
history.push({ pathname: url });
|
|
25
24
|
}
|
|
26
25
|
}, [handleAnalytics, history, onClick, url]);
|
|
27
|
-
return (React.createElement(Button, {
|
|
26
|
+
return (React.createElement(Button, { className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
|
|
28
27
|
React.createElement(Icon, { data: ArrowSidebar, size: 24 }),
|
|
29
28
|
React.createElement("span", null, title)));
|
|
30
29
|
}
|
|
@@ -8,7 +8,6 @@ import { LocaleContext } from '../../context/localeContext/localeContext';
|
|
|
8
8
|
import { useMetrika } from '../../hooks/useMetrika';
|
|
9
9
|
import { useAnalytics } from '../../hooks';
|
|
10
10
|
import { Github } from '../../icons';
|
|
11
|
-
import RouterLink from '../RouterLink/RouterLink';
|
|
12
11
|
import './Button.css';
|
|
13
12
|
const b = block('button-block');
|
|
14
13
|
const Button = (props) => {
|
|
@@ -42,7 +41,7 @@ const Button = (props) => {
|
|
|
42
41
|
image = undefined;
|
|
43
42
|
}
|
|
44
43
|
const buttonTheme = theme === 'scale' ? 'accent' : theme;
|
|
45
|
-
return (React.createElement(CommonButton, Object.assign({ className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), href: url ? setUrlTld(url, tld) : undefined
|
|
44
|
+
return (React.createElement(CommonButton, Object.assign({ className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), href: url ? setUrlTld(url, tld) : undefined }, buttonProps),
|
|
46
45
|
icon && buttonImg.position === 'left' ? icon : null,
|
|
47
46
|
React.createElement("span", { className: b('content') },
|
|
48
47
|
image && buttonImg.position === 'left' ? image : null,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { block, getLinkProps } from '../../utils';
|
|
2
2
|
import React, { useContext } from 'react';
|
|
3
3
|
import { LocationContext } from '../../context/locationContext';
|
|
4
|
-
import LinkBase from '../LinkBase/LinkBase';
|
|
5
4
|
import './FileLink.css';
|
|
6
5
|
const b = block('file-link');
|
|
7
6
|
const FIGMA_URL = 'https://www.figma.com';
|
|
@@ -28,6 +27,6 @@ const FileLink = (props) => {
|
|
|
28
27
|
return (React.createElement("div", { className: b({ ext: fileExt, type, size: textSize, theme }, className) },
|
|
29
28
|
Object.values(FileExtension).includes(fileExt) && (React.createElement("div", { className: b('file-label') }, fileExt)),
|
|
30
29
|
React.createElement("div", { className: b('link') },
|
|
31
|
-
React.createElement(
|
|
30
|
+
React.createElement("a", Object.assign({ href: href }, getLinkProps(href, hostname), { onClick: onClick }), text))));
|
|
32
31
|
};
|
|
33
32
|
export default FileLink;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { block } from '../../utils';
|
|
3
3
|
import { useMetrika } from '../../hooks/useMetrika';
|
|
4
|
-
import LinkBase from '../LinkBase/LinkBase';
|
|
5
4
|
import './HeaderBreadcrumbs.css';
|
|
6
5
|
const b = block('header-breadcrumbs');
|
|
7
6
|
export default function HeaderBreadcrumbs(props) {
|
|
@@ -11,5 +10,5 @@ export default function HeaderBreadcrumbs(props) {
|
|
|
11
10
|
handleMetrika({ metrikaGoals, pixelEvents });
|
|
12
11
|
};
|
|
13
12
|
return (React.createElement("div", { className: b({ theme }, className) }, items.map((item) => (React.createElement("div", { className: b('item'), key: item.url },
|
|
14
|
-
React.createElement(
|
|
13
|
+
React.createElement("a", { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
|
|
15
14
|
}
|
|
@@ -3,7 +3,6 @@ import { Icon } from '@gravity-ui/uikit';
|
|
|
3
3
|
import { block, getLinkProps, setUrlTld } from '../../utils';
|
|
4
4
|
import { DefaultEventNames } from '../../models';
|
|
5
5
|
import { Chevron } from '../../icons';
|
|
6
|
-
import LinkBase from '../LinkBase/LinkBase';
|
|
7
6
|
import FileLink from '../FileLink/FileLink';
|
|
8
7
|
import BackLink from '../BackLink/BackLink';
|
|
9
8
|
import { LocaleContext } from '../../context/localeContext/localeContext';
|
|
@@ -47,7 +46,7 @@ const LinkBlock = (props) => {
|
|
|
47
46
|
case 'normal': {
|
|
48
47
|
const linkProps = getLinkProps(url, hostname, target);
|
|
49
48
|
const content = children || text;
|
|
50
|
-
return (React.createElement(
|
|
49
|
+
return (React.createElement("a", Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (React.createElement(Fragment, null,
|
|
51
50
|
React.createElement("span", { className: b('content') }, content),
|
|
52
51
|
WORD_JOINER_SYM,
|
|
53
52
|
React.createElement(Icon, { className: b('arrow'), data: Chevron, size: getArrowSize(textSize) }))) : (content)));
|
|
@@ -10,6 +10,7 @@ import { MetrikaContext } from '../../context/metrikaContext';
|
|
|
10
10
|
import { MobileContext } from '../../context/mobileContext';
|
|
11
11
|
import { useAnalytics } from '../../hooks';
|
|
12
12
|
import { PlayVideo } from '../../icons';
|
|
13
|
+
import { checkYoutubeVideos } from './utils';
|
|
13
14
|
import './ReactPlayer.css';
|
|
14
15
|
const b = block('ReactPlayer');
|
|
15
16
|
const FPS = 60;
|
|
@@ -32,6 +33,7 @@ export const ReactPlayerBlock = React.forwardRef((props, originRef) => {
|
|
|
32
33
|
const [started, setStarted] = useState(autoPlay);
|
|
33
34
|
const [paused, setPaused] = useState(false);
|
|
34
35
|
const [ended, setEnded] = useState(false);
|
|
36
|
+
const videoSrc = useMemo(() => checkYoutubeVideos(src), [src]);
|
|
35
37
|
const eventsArray = useMemo(() => {
|
|
36
38
|
if (analyticsEvents) {
|
|
37
39
|
return Array.isArray(analyticsEvents) ? analyticsEvents : [analyticsEvents];
|
|
@@ -190,7 +192,7 @@ export const ReactPlayerBlock = React.forwardRef((props, originRef) => {
|
|
|
190
192
|
}, elapsedTimePercent: elapsedTimePercent }));
|
|
191
193
|
}, [controls, isPlaying, customBarControlsClassName, changeMute]);
|
|
192
194
|
return (React.createElement("div", { className: b({ wrapper: !currentHeight }, className), ref: ref, onClick: handleClick },
|
|
193
|
-
React.createElement(ReactPlayer, { className: b('player'), url:
|
|
195
|
+
React.createElement(ReactPlayer, { className: b('player'), url: videoSrc, muted: muted, controls: controls === MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
|
|
194
196
|
renderCustomBarControls(muted, playedPercent)));
|
|
195
197
|
});
|
|
196
198
|
function getHeight(width) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const checkYoutubeVideos: (src: string | string[]) => string | string[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// the file serves to support live video with react-player@2.9
|
|
2
|
+
const LIVE_YUOTUBE_VIDEO_REGEX = /(?:youtu\.be\/live\/|youtube(?:-nocookie)?\.com\/(?:live\/))((\w|-){11})/;
|
|
3
|
+
const YOUTUBE_VIDEO_TEMPLATE = 'https://www.youtube.com/watch?v=';
|
|
4
|
+
export const checkYoutubeVideos = (src) => {
|
|
5
|
+
if (Array.isArray(src)) {
|
|
6
|
+
return src.map((videoUrl) => {
|
|
7
|
+
var _a;
|
|
8
|
+
if (LIVE_YUOTUBE_VIDEO_REGEX.test(videoUrl)) {
|
|
9
|
+
const youtubeLiveId = (_a = videoUrl.match(LIVE_YUOTUBE_VIDEO_REGEX)) === null || _a === void 0 ? void 0 : _a[1];
|
|
10
|
+
if (!youtubeLiveId) {
|
|
11
|
+
return videoUrl;
|
|
12
|
+
}
|
|
13
|
+
return `${YOUTUBE_VIDEO_TEMPLATE}${youtubeLiveId}`;
|
|
14
|
+
}
|
|
15
|
+
return videoUrl;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return src;
|
|
19
|
+
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { Fragment, useContext } from 'react';
|
|
2
2
|
import { block, getHeaderTag, getLinkProps } from '../../utils';
|
|
3
3
|
import Anchor from '../Anchor/Anchor';
|
|
4
|
-
import LinkBase from '../LinkBase/LinkBase';
|
|
5
4
|
import { ToggleArrow, HTML } from '../';
|
|
6
5
|
import { LocationContext } from '../../context/locationContext';
|
|
7
6
|
import { MobileContext } from '../../context/mobileContext';
|
|
@@ -37,7 +36,7 @@ const Title = (props) => {
|
|
|
37
36
|
content = textMarkup;
|
|
38
37
|
}
|
|
39
38
|
else if (url) {
|
|
40
|
-
content = (React.createElement(
|
|
39
|
+
content = (React.createElement("a", Object.assign({ className: b('link'), href: url }, getLinkProps(url, hostname), { onClick: onClick }), insideClickableContent));
|
|
41
40
|
}
|
|
42
41
|
else if (onClick) {
|
|
43
42
|
content = (React.createElement("span", { className: b('link'), onClick: onClick }, insideClickableContent));
|
|
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
|
|
|
17
17
|
export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
|
|
18
18
|
export { default as Image } from './Image/Image';
|
|
19
19
|
export { default as Link } from './Link/Link';
|
|
20
|
-
export { default as LinkBase } from './LinkBase/LinkBase';
|
|
21
20
|
export { default as Links } from './Link/Links';
|
|
22
21
|
export { default as Media } from './Media/Media';
|
|
23
22
|
export { default as OutsideClick } from './OutsideClick/OutsideClick';
|
|
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
|
|
|
17
17
|
export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
|
|
18
18
|
export { default as Image } from './Image/Image';
|
|
19
19
|
export { default as Link } from './Link/Link';
|
|
20
|
-
export { default as LinkBase } from './LinkBase/LinkBase';
|
|
21
20
|
export { default as Links } from './Link/Links';
|
|
22
21
|
export { default as Media } from './Media/Media';
|
|
23
22
|
export { default as OutsideClick } from './OutsideClick/OutsideClick';
|
|
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
|
|
|
111
111
|
controls?: MediaVideoControlsType;
|
|
112
112
|
metrika?: MetrikaVideo;
|
|
113
113
|
}
|
|
114
|
-
export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
|
|
115
|
-
}
|
|
116
114
|
export interface LinkProps extends AnalyticsEventsBase, Stylable {
|
|
117
115
|
url: string;
|
|
118
116
|
text?: string;
|
package/build/esm/navigation/components/NavigationItem/components/GithubButton/GithubButton.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useRef, useEffect } from 'react';
|
|
2
2
|
import { block } from '../../../../../utils';
|
|
3
3
|
import { NavigationGithubButtonIcon } from '../../../../../models';
|
|
4
|
-
import { LinkBase } from '../../../../../components';
|
|
5
4
|
import './GithubButton.css';
|
|
6
5
|
const b = block('github-button');
|
|
7
6
|
const DEFAULT_LABEL = 'Stars on GitHub';
|
|
@@ -40,5 +39,5 @@ export const GithubButton = ({ text, url, className, label, size, icon, }) => {
|
|
|
40
39
|
}, []);
|
|
41
40
|
return (React.createElement("div", { className: b(null, className) },
|
|
42
41
|
React.createElement("span", { ref: containerRef },
|
|
43
|
-
React.createElement(
|
|
42
|
+
React.createElement("a", Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
|
|
44
43
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { block } from '../../../utils';
|
|
3
|
-
import { Image
|
|
3
|
+
import { Image } from '../../../components';
|
|
4
4
|
import { getMediaImage } from '../../../components/Media/Image/utils';
|
|
5
5
|
import './SocialIcon.css';
|
|
6
6
|
const b = block('social-icon');
|
|
7
7
|
const SocialIcon = ({ icon, url, className }) => {
|
|
8
8
|
const iconData = getMediaImage(icon);
|
|
9
|
-
return (React.createElement(
|
|
9
|
+
return (React.createElement("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
|
|
10
10
|
React.createElement(Image, Object.assign({ className: b('icon') }, iconData))));
|
|
11
11
|
};
|
|
12
12
|
export default SocialIcon;
|
|
@@ -2,7 +2,7 @@ import React, { useCallback, useContext } from 'react';
|
|
|
2
2
|
import { Button } from '@gravity-ui/uikit';
|
|
3
3
|
import { block, getThemedValue } from '../../utils';
|
|
4
4
|
import { AuthorType, DefaultEventNames } from '../../models';
|
|
5
|
-
import { Author, Image, HTML
|
|
5
|
+
import { Author, Image, HTML } from '../../components';
|
|
6
6
|
import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
|
|
7
7
|
import { getMediaImage } from '../../components/Media/Image/utils';
|
|
8
8
|
import { useAnalytics } from '../../hooks';
|
|
@@ -17,7 +17,7 @@ const Quote = (props) => {
|
|
|
17
17
|
const handleButtonClick = useCallback(() => handleAnalytics(), [handleAnalytics]);
|
|
18
18
|
const renderFooter = Boolean(author || url) && (React.createElement("div", { className: b('author-wrapper') },
|
|
19
19
|
author && (React.createElement(Author, { className: b('author', { theme: textTheme }), author: author, type: AuthorType.Line })),
|
|
20
|
-
url && buttonText && (React.createElement(Button, { view: "outlined", size: "xl", href: url,
|
|
20
|
+
url && buttonText && (React.createElement(Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
|
|
21
21
|
return (React.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
|
|
22
22
|
React.createElement("div", { key: text, className: b('content-wrapper') },
|
|
23
23
|
React.createElement("div", null,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/page-constructor",
|
|
3
|
-
"version": "1.26.0
|
|
3
|
+
"version": "1.26.0",
|
|
4
4
|
"description": "Gravity UI Page Constructor",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"bem-cn-lite": "^4.0.0",
|
|
51
51
|
"github-buttons": "2.23.0",
|
|
52
52
|
"lodash": "^4.17.21",
|
|
53
|
-
"react-player": "^2.
|
|
53
|
+
"react-player": "^2.9.0",
|
|
54
54
|
"react-slick": "^0.28.1",
|
|
55
55
|
"react-spring": "^9.3.0",
|
|
56
56
|
"react-transition-group": "^4.4.2",
|
|
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
|
|
|
111
111
|
controls?: MediaVideoControlsType;
|
|
112
112
|
metrika?: MetrikaVideo;
|
|
113
113
|
}
|
|
114
|
-
export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
|
|
115
|
-
}
|
|
116
114
|
export interface LinkProps extends AnalyticsEventsBase, Stylable {
|
|
117
115
|
url: string;
|
|
118
116
|
text?: string;
|
package/styles/mixins.scss
CHANGED
|
@@ -518,18 +518,14 @@ unpredictable css rules order in build */
|
|
|
518
518
|
|
|
519
519
|
@mixin tab-panel() {
|
|
520
520
|
display: flex;
|
|
521
|
-
flex-wrap:
|
|
521
|
+
flex-wrap: wrap;
|
|
522
522
|
justify-content: flex-start;
|
|
523
|
-
overflow: auto;
|
|
524
523
|
|
|
525
524
|
&_centered {
|
|
526
|
-
display: flex;
|
|
527
525
|
justify-content: center;
|
|
528
|
-
flex-wrap: wrap;
|
|
529
526
|
}
|
|
530
527
|
|
|
531
528
|
@media (max-width: map-get($gridBreakpoints, 'md')) {
|
|
532
|
-
display: flex;
|
|
533
529
|
flex-wrap: nowrap;
|
|
534
530
|
justify-content: flex-start;
|
|
535
531
|
overflow: auto;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
-
const lodash_1 = require("lodash");
|
|
6
|
-
const locationContext_1 = require("../../context/locationContext");
|
|
7
|
-
const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
|
|
8
|
-
const LinkBase = (props) => {
|
|
9
|
-
const { href, children } = props, linkProps = tslib_1.__rest(props, ["href", "children"]);
|
|
10
|
-
const { Link } = (0, react_1.useContext)(locationContext_1.LocationContext);
|
|
11
|
-
if (Link && href && !(linkProps === null || linkProps === void 0 ? void 0 : linkProps.target)) {
|
|
12
|
-
const extractedProps = (0, lodash_1.omit)(linkProps, ['rel', 'ref']);
|
|
13
|
-
return (react_1.default.createElement(RouterLink_1.default, { href: href },
|
|
14
|
-
react_1.default.createElement("a", Object.assign({}, extractedProps), children)));
|
|
15
|
-
}
|
|
16
|
-
return (react_1.default.createElement("a", Object.assign({ href: href }, linkProps), children));
|
|
17
|
-
};
|
|
18
|
-
exports.default = LinkBase;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { __rest } from "tslib";
|
|
2
|
-
import React, { useContext } from 'react';
|
|
3
|
-
import { omit } from 'lodash';
|
|
4
|
-
import { LocationContext } from '../../context/locationContext';
|
|
5
|
-
import RouterLink from '../RouterLink/RouterLink';
|
|
6
|
-
const LinkBase = (props) => {
|
|
7
|
-
const { href, children } = props, linkProps = __rest(props, ["href", "children"]);
|
|
8
|
-
const { Link } = useContext(LocationContext);
|
|
9
|
-
if (Link && href && !(linkProps === null || linkProps === void 0 ? void 0 : linkProps.target)) {
|
|
10
|
-
const extractedProps = omit(linkProps, ['rel', 'ref']);
|
|
11
|
-
return (React.createElement(RouterLink, { href: href },
|
|
12
|
-
React.createElement("a", Object.assign({}, extractedProps), children)));
|
|
13
|
-
}
|
|
14
|
-
return (React.createElement("a", Object.assign({ href: href }, linkProps), children));
|
|
15
|
-
};
|
|
16
|
-
export default LinkBase;
|