@gravity-ui/page-constructor 1.26.0-alpha.2 → 2.0.0-beta.1

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.
Files changed (36) hide show
  1. package/build/cjs/blocks/Header/Header.js +2 -5
  2. package/build/cjs/blocks/Icons/Icons.js +1 -1
  3. package/build/cjs/blocks/Share/Share.js +1 -2
  4. package/build/cjs/components/BackLink/BackLink.js +1 -2
  5. package/build/cjs/components/Button/Button.js +1 -2
  6. package/build/cjs/components/FileLink/FileLink.js +1 -2
  7. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
  8. package/build/cjs/components/Link/Link.js +1 -2
  9. package/build/cjs/components/Title/Title.js +1 -2
  10. package/build/cjs/components/index.d.ts +0 -1
  11. package/build/cjs/components/index.js +1 -3
  12. package/build/cjs/models/constructor-items/common.d.ts +0 -2
  13. package/build/cjs/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
  14. package/build/cjs/navigation/components/SocialIcon/SocialIcon.js +1 -1
  15. package/build/cjs/sub-blocks/Quote/Quote.js +1 -1
  16. package/build/esm/blocks/Header/Header.js +3 -6
  17. package/build/esm/blocks/Icons/Icons.js +2 -2
  18. package/build/esm/blocks/Share/Share.js +1 -2
  19. package/build/esm/components/BackLink/BackLink.js +1 -2
  20. package/build/esm/components/Button/Button.js +1 -2
  21. package/build/esm/components/FileLink/FileLink.js +1 -2
  22. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
  23. package/build/esm/components/Link/Link.js +1 -2
  24. package/build/esm/components/Title/Title.js +1 -2
  25. package/build/esm/components/index.d.ts +0 -1
  26. package/build/esm/components/index.js +0 -1
  27. package/build/esm/models/constructor-items/common.d.ts +0 -2
  28. package/build/esm/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
  29. package/build/esm/navigation/components/SocialIcon/SocialIcon.js +2 -2
  30. package/build/esm/sub-blocks/Quote/Quote.js +2 -2
  31. package/package.json +7 -6
  32. package/server/models/constructor-items/common.d.ts +0 -2
  33. package/build/cjs/components/LinkBase/LinkBase.d.ts +0 -3
  34. package/build/cjs/components/LinkBase/LinkBase.js +0 -18
  35. package/build/esm/components/LinkBase/LinkBase.d.ts +0 -3
  36. package/build/esm/components/LinkBase/LinkBase.js +0 -16
@@ -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
- // <RouterLink href={button.url} key={index}>
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(components_1.LinkBase, Object.assign({ className: b('item'), key: item.url, href: item.url }, (0, utils_1.getLinkProps)(item.url, hostname)),
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, component: components_1.RouterLink, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && react_1.default.createElement(uikit_1.Icon, { data: icon, size: 24, className: b('icon', { type }) })));
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;
@@ -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, { component: RouterLink_1.default, className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
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, component: RouterLink_1.default }, buttonProps),
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(LinkBase_1.default, Object.assign({ href: href }, (0, utils_1.getLinkProps)(href, hostname), { onClick: onClick }), text))));
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(LinkBase_1.default, { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
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(LinkBase_1.default, Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (react_1.default.createElement(react_1.Fragment, null,
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)));
@@ -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(LinkBase_1.default, Object.assign({ className: b('link'), href: url }, (0, utils_1.getLinkProps)(url, hostname), { onClick: onClick }), insideClickableContent));
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.LinkBase = 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;
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;
@@ -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(components_1.LinkBase, 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))));
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(components_1.LinkBase, { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
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, component: components_1.RouterLink, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
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,
@@ -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
- // <RouterLink href={button.url} key={index}>
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, LinkBase } from '../../components';
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(LinkBase, Object.assign({ className: b('item'), key: item.url, href: item.url }, getLinkProps(item.url, hostname)),
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, component: RouterLink, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && React.createElement(Icon, { data: icon, size: 24, className: b('icon', { type }) })));
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;
@@ -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, { component: RouterLink, className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
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, component: RouterLink }, buttonProps),
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(LinkBase, Object.assign({ href: href }, getLinkProps(href, hostname), { onClick: onClick }), text))));
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(LinkBase, { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
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(LinkBase, Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (React.createElement(Fragment, null,
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)));
@@ -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(LinkBase, Object.assign({ className: b('link'), href: url }, getLinkProps(url, hostname), { onClick: onClick }), insideClickableContent));
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;
@@ -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(LinkBase, 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))));
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, LinkBase } from '../../../components';
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(LinkBase, { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
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, RouterLink } from '../../components';
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, component: RouterLink, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
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-alpha.2",
3
+ "version": "2.0.0-beta.1",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -61,8 +61,8 @@
61
61
  "uuid": "^9.0.0"
62
62
  },
63
63
  "peerDependencies": {
64
- "react": "^16.0.0 || ^17.0.0",
65
- "@gravity-ui/uikit": "^3.11.0",
64
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0",
65
+ "@gravity-ui/uikit": "^4.1.0",
66
66
  "@doc-tools/transform": "^2.6.1"
67
67
  },
68
68
  "devDependencies": {
@@ -73,19 +73,20 @@
73
73
  "@gravity-ui/prettier-config": "^1.0.1",
74
74
  "@gravity-ui/stylelint-config": "^1.0.0",
75
75
  "@gravity-ui/tsconfig": "^1.0.0",
76
- "@gravity-ui/uikit": "^3.11.0",
76
+ "@gravity-ui/uikit": "^4.1.0",
77
77
  "@storybook/addon-actions": "^6.3.12",
78
78
  "@storybook/addon-essentials": "^6.5.10",
79
79
  "@storybook/addon-knobs": "^6.3.1",
80
80
  "@storybook/addon-viewport": "^6.3.12",
81
81
  "@storybook/preset-scss": "^1.0.3",
82
- "@storybook/react": "^6.5.10",
82
+ "@storybook/react": "^6.5.16",
83
83
  "@testing-library/jest-dom": "^5.16.5",
84
84
  "@testing-library/react": "^13.4.0",
85
85
  "@testing-library/user-event": "^14.4.3",
86
86
  "@types/jest": "^29.2.4",
87
87
  "@types/lodash": "^4.14.176",
88
- "@types/react": "^16.14.20",
88
+ "@types/react": "^18.0.27",
89
+ "@types/react-dom": "^18.0.10",
89
90
  "@types/react-slick": "^0.23.7",
90
91
  "@types/react-transition-group": "^4.4.4",
91
92
  "@types/sanitize-html": "^2.6.0",
@@ -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;
@@ -1,3 +0,0 @@
1
- import { LinkBaseProps, WithChildren } from '../../models';
2
- declare const LinkBase: (props: WithChildren<LinkBaseProps>) => JSX.Element;
3
- export default LinkBase;
@@ -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,3 +0,0 @@
1
- import { LinkBaseProps, WithChildren } from '../../models';
2
- declare const LinkBase: (props: WithChildren<LinkBaseProps>) => JSX.Element;
3
- export 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;