@gravity-ui/page-constructor 7.9.0 → 7.10.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.
@@ -10,6 +10,7 @@ const hooks_1 = require("../../hooks/index.js");
10
10
  const icons_1 = require("../../icons/index.js");
11
11
  const models_1 = require("../../models/index.js");
12
12
  const utils_1 = require("../../utils/index.js");
13
+ const icons_2 = require("../../utils/icons.js");
13
14
  const i18n_1 = require("./i18n/index.js");
14
15
  const utils_2 = require("./utils.js");
15
16
  const DEFAULT_IMG_SIZE = 16;
@@ -37,8 +38,9 @@ const Button = (props) => {
37
38
  alt: img.alt,
38
39
  }
39
40
  : { url: img, position: defaultImgPosition };
41
+ const { position, iconData, iconSize, className: iconClassName, url: imgUrl, alt } = buttonImg;
40
42
  const buttonClass = img
41
- ? b({ position: buttonImg.position, ...buttonModifiers }, className)
43
+ ? b({ position, ...buttonModifiers }, className)
42
44
  : b({ ...buttonModifiers }, className);
43
45
  const buttonProps = {
44
46
  ...rest,
@@ -51,13 +53,19 @@ const Button = (props) => {
51
53
  }
52
54
  let icon;
53
55
  let image;
54
- if (img && buttonImg.iconData) {
55
- const iconSize = buttonImg.iconSize;
56
- const iconClassName = buttonImg.className ? b('icon', buttonImg.className) : b('icon');
57
- icon = ((0, jsx_runtime_1.jsx)(uikit_1.Icon, { className: iconClassName, data: buttonImg.iconData, size: iconSize, qa: utils_2.ICON_QA }));
56
+ if (img && iconData) {
57
+ let finalIconData = iconData;
58
+ if (typeof iconData === 'string') {
59
+ const gravityIcon = (0, icons_2.getGravityIcon)(iconData);
60
+ if (gravityIcon) {
61
+ finalIconData = gravityIcon;
62
+ }
63
+ }
64
+ const finalIconClassName = iconClassName ? b('icon', iconClassName) : b('icon');
65
+ icon = ((0, jsx_runtime_1.jsx)(uikit_1.Icon, { className: finalIconClassName, data: finalIconData, size: iconSize, qa: utils_2.ICON_QA }));
58
66
  }
59
- else if (img && buttonImg.url) {
60
- image = ((0, jsx_runtime_1.jsx)("img", { className: b('image'), width: buttonImg.iconSize || DEFAULT_IMG_SIZE, height: buttonImg.iconSize || DEFAULT_IMG_SIZE, src: buttonImg.url, alt: buttonImg.alt || (0, i18n_1.i18n)('image-alt') }));
67
+ else if (img && imgUrl) {
68
+ image = ((0, jsx_runtime_1.jsx)("img", { className: b('image'), width: iconSize || DEFAULT_IMG_SIZE, height: iconSize || DEFAULT_IMG_SIZE, src: imgUrl, alt: alt || (0, i18n_1.i18n)('image-alt') }));
61
69
  }
62
70
  // Special handling for github theme (for backwards compatibility)
63
71
  if (theme === 'github') {
@@ -65,7 +73,7 @@ const Button = (props) => {
65
73
  image = undefined;
66
74
  }
67
75
  const buttonTheme = theme === 'scale' ? 'accent' : theme;
68
- return ((0, jsx_runtime_1.jsxs)(uikit_1.Button, { className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), title: urlTitle, width: width, ...buttonProps, children: [icon && buttonImg.position === 'left' ? icon : null, (0, jsx_runtime_1.jsxs)("span", { className: b('content'), children: [image && buttonImg.position === 'left' ? image : null, (0, jsx_runtime_1.jsx)("span", { className: b('text'), children: text }), image && buttonImg.position === 'right' ? image : null] }), icon && buttonImg.position === 'right' ? icon : null] }));
76
+ return ((0, jsx_runtime_1.jsxs)(uikit_1.Button, { className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), title: urlTitle, width: width, ...buttonProps, children: [icon && position === 'left' ? icon : null, (0, jsx_runtime_1.jsxs)("span", { className: b('content'), children: [image && position === 'left' ? image : null, (0, jsx_runtime_1.jsx)("span", { className: b('text'), children: text }), image && position === 'right' ? image : null] }), icon && position === 'right' ? icon : null] }));
69
77
  };
70
78
  exports.default = Button;
71
79
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {StoreBadge} from '@gravity-ui/components';\nimport {\n Button as CommonButton,\n Icon,\n Platform,\n ButtonProps as UIKitButtonProps,\n} from '@gravity-ui/uikit';\n\nimport {LocaleContext} from '../../context/localeContext/localeContext';\nimport {useAnalytics} from '../../hooks';\nimport {Github} from '../../icons';\nimport {ButtonProps as ButtonParams, DefaultEventNames, QAProps} from '../../models';\nimport {block, setUrlTld} from '../../utils';\n\nimport {i18n} from './i18n';\nimport {ICON_QA, OldButtonSize, OldButtonTheme, toCommonSize, toCommonView} from './utils';\n\nimport './Button.scss';\n\nconst DEFAULT_IMG_SIZE = 16;\n\nexport interface ButtonProps extends Omit<ButtonParams, 'url'>, QAProps {\n className?: string;\n id?: string;\n url?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nconst b = block('button-block');\n\n// eslint-disable-next-line complexity\nconst Button = (props: ButtonProps) => {\n const {tld} = React.useContext(LocaleContext);\n const {\n className,\n analyticsEvents,\n size = 'l',\n theme = 'normal',\n url,\n urlTitle,\n img,\n onClick: onClickOrigin,\n text,\n width,\n ...rest\n } = props;\n const defaultImgPosition = 'left';\n const handleAnalytics = useAnalytics(DefaultEventNames.Button, url);\n const onClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n handleAnalytics(analyticsEvents);\n\n if (onClickOrigin) {\n onClickOrigin(e);\n }\n },\n [handleAnalytics, analyticsEvents, onClickOrigin],\n );\n\n const buttonModifiers = {size, theme, width};\n\n const buttonImg =\n img instanceof Object\n ? {\n url: img.url,\n iconData: img.iconData,\n iconSize: img.iconSize,\n className: img.className,\n position: img.position || defaultImgPosition,\n alt: img.alt,\n }\n : {url: img, position: defaultImgPosition};\n\n const buttonClass = img\n ? b({position: buttonImg.position, ...buttonModifiers}, className)\n : b({...buttonModifiers}, className);\n\n const buttonProps = {\n ...rest,\n href: url ? setUrlTld(url, tld) : undefined,\n onClick,\n };\n\n if (theme === 'app-store' || theme === 'google-play') {\n const platform = theme === 'app-store' ? Platform.IOS : Platform.ANDROID;\n\n return <StoreBadge className={buttonClass} platform={platform} href={url as string} />;\n }\n\n let icon;\n let image;\n\n if (img && buttonImg.iconData) {\n const iconSize = buttonImg.iconSize;\n const iconClassName = buttonImg.className ? b('icon', buttonImg.className) : b('icon');\n icon = (\n <Icon\n className={iconClassName}\n data={buttonImg.iconData}\n size={iconSize}\n qa={ICON_QA}\n />\n );\n } else if (img && buttonImg.url) {\n image = (\n <img\n className={b('image')}\n width={buttonImg.iconSize || DEFAULT_IMG_SIZE}\n height={buttonImg.iconSize || DEFAULT_IMG_SIZE}\n src={buttonImg.url}\n alt={buttonImg.alt || i18n('image-alt')}\n />\n );\n }\n\n // Special handling for github theme (for backwards compatibility)\n if (theme === 'github') {\n icon = <Icon className={b('icon')} data={Github} size={24} qa={ICON_QA} />;\n image = undefined;\n }\n\n const buttonTheme = theme === 'scale' ? 'accent' : theme;\n\n return (\n <CommonButton\n className={buttonClass}\n view={toCommonView(buttonTheme as OldButtonTheme)}\n size={toCommonSize(size as OldButtonSize)}\n title={urlTitle}\n width={width}\n {...(buttonProps as UIKitButtonProps)}\n >\n {icon && buttonImg.position === 'left' ? icon : null}\n <span className={b('content')}>\n {image && buttonImg.position === 'left' ? image : null}\n <span className={b('text')}>{text}</span>\n {image && buttonImg.position === 'right' ? image : null}\n </span>\n {icon && buttonImg.position === 'right' ? icon : null}\n </CommonButton>\n );\n};\n\nexport default Button;\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {StoreBadge} from '@gravity-ui/components';\nimport {\n Button as CommonButton,\n Icon,\n Platform,\n ButtonProps as UIKitButtonProps,\n} from '@gravity-ui/uikit';\n\nimport {LocaleContext} from '../../context/localeContext/localeContext';\nimport {useAnalytics} from '../../hooks';\nimport {Github} from '../../icons';\nimport {ButtonProps as ButtonParams, DefaultEventNames, QAProps} from '../../models';\nimport {block, setUrlTld} from '../../utils';\nimport {getGravityIcon} from '../../utils/icons';\n\nimport {i18n} from './i18n';\nimport {ICON_QA, OldButtonSize, OldButtonTheme, toCommonSize, toCommonView} from './utils';\n\nimport './Button.scss';\n\nconst DEFAULT_IMG_SIZE = 16;\n\nexport interface ButtonProps extends Omit<ButtonParams, 'url'>, QAProps {\n className?: string;\n id?: string;\n url?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nconst b = block('button-block');\n\n// eslint-disable-next-line complexity\nconst Button = (props: ButtonProps) => {\n const {tld} = React.useContext(LocaleContext);\n const {\n className,\n analyticsEvents,\n size = 'l',\n theme = 'normal',\n url,\n urlTitle,\n img,\n onClick: onClickOrigin,\n text,\n width,\n ...rest\n } = props;\n const defaultImgPosition = 'left';\n const handleAnalytics = useAnalytics(DefaultEventNames.Button, url);\n const onClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n handleAnalytics(analyticsEvents);\n\n if (onClickOrigin) {\n onClickOrigin(e);\n }\n },\n [handleAnalytics, analyticsEvents, onClickOrigin],\n );\n\n const buttonModifiers = {size, theme, width};\n\n const buttonImg =\n img instanceof Object\n ? {\n url: img.url,\n iconData: img.iconData,\n iconSize: img.iconSize,\n className: img.className,\n position: img.position || defaultImgPosition,\n alt: img.alt,\n }\n : {url: img, position: defaultImgPosition};\n\n const {position, iconData, iconSize, className: iconClassName, url: imgUrl, alt} = buttonImg;\n\n const buttonClass = img\n ? b({position, ...buttonModifiers}, className)\n : b({...buttonModifiers}, className);\n\n const buttonProps = {\n ...rest,\n href: url ? setUrlTld(url, tld) : undefined,\n onClick,\n };\n\n if (theme === 'app-store' || theme === 'google-play') {\n const platform = theme === 'app-store' ? Platform.IOS : Platform.ANDROID;\n\n return <StoreBadge className={buttonClass} platform={platform} href={url as string} />;\n }\n\n let icon;\n let image;\n\n if (img && iconData) {\n let finalIconData = iconData;\n\n if (typeof iconData === 'string') {\n const gravityIcon = getGravityIcon(iconData);\n if (gravityIcon) {\n finalIconData = gravityIcon;\n }\n }\n\n const finalIconClassName = iconClassName ? b('icon', iconClassName) : b('icon');\n icon = (\n <Icon\n className={finalIconClassName}\n data={finalIconData}\n size={iconSize}\n qa={ICON_QA}\n />\n );\n } else if (img && imgUrl) {\n image = (\n <img\n className={b('image')}\n width={iconSize || DEFAULT_IMG_SIZE}\n height={iconSize || DEFAULT_IMG_SIZE}\n src={imgUrl}\n alt={alt || i18n('image-alt')}\n />\n );\n }\n\n // Special handling for github theme (for backwards compatibility)\n if (theme === 'github') {\n icon = <Icon className={b('icon')} data={Github} size={24} qa={ICON_QA} />;\n image = undefined;\n }\n\n const buttonTheme = theme === 'scale' ? 'accent' : theme;\n\n return (\n <CommonButton\n className={buttonClass}\n view={toCommonView(buttonTheme as OldButtonTheme)}\n size={toCommonSize(size as OldButtonSize)}\n title={urlTitle}\n width={width}\n {...(buttonProps as UIKitButtonProps)}\n >\n {icon && position === 'left' ? icon : null}\n <span className={b('content')}>\n {image && position === 'left' ? image : null}\n <span className={b('text')}>{text}</span>\n {image && position === 'right' ? image : null}\n </span>\n {icon && position === 'right' ? icon : null}\n </CommonButton>\n );\n};\n\nexport default Button;\n"]}
@@ -14,10 +14,12 @@ unpredictable css rules order in build */
14
14
  max-width: 100%;
15
15
  margin-bottom: 12px;
16
16
  height: 32px;
17
- width: 32px;
18
17
  object-fit: contain;
19
18
  display: block;
20
19
  }
20
+ .pc-icon-wrapper__icon_gravity-icon {
21
+ width: 32px;
22
+ }
21
23
  .pc-icon-wrapper__icon_icon-position_left {
22
24
  height: 22px;
23
25
  width: 22px;
@@ -14,7 +14,11 @@ const IconWrapper = (props) => {
14
14
  const iconPosition = icon?.position;
15
15
  const gravityIconPosition = gravityIcon?.position;
16
16
  const position = gravityIconPosition || iconPosition;
17
- return ((0, jsx_runtime_1.jsxs)("div", { className: b({ ['icon-position']: position }, className), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { icon: icon?.value, gravityIcon: gravityIcon?.value, containerClassName: b('icon-container'), className: b('icon', { ['icon-position']: position, size }) }), (0, jsx_runtime_1.jsx)("div", { className: b('content', { ['icon-position']: position }), children: children })] }));
17
+ return ((0, jsx_runtime_1.jsxs)("div", { className: b({ ['icon-position']: position }, className), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { icon: icon?.value, gravityIcon: gravityIcon?.value, containerClassName: b('icon-container'), className: b('icon', {
18
+ ['icon-position']: position,
19
+ size,
20
+ ['gravity-icon']: Boolean(gravityIcon),
21
+ }) }), (0, jsx_runtime_1.jsx)("div", { className: b('content', { ['icon-position']: position }), children: children })] }));
18
22
  };
19
23
  exports.default = IconWrapper;
20
24
  //# sourceMappingURL=IconWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconWrapper.js","sourceRoot":"../../../../src","sources":["components/IconWrapper/IconWrapper.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAG/B,gDAAkC;AAClC,mEAAgC;AAGhC,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,KAAiE,EAAE,EAAE;IACtF,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,uBAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;IACvD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAC;IAEpC,MAAM,mBAAmB,GAAG,WAAW,EAAE,QAAQ,CAAC;IAElD,MAAM,QAAQ,GAAG,mBAAmB,IAAI,YAAY,CAAC;IAErD,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,EAAE,SAAS,CAAC,aACvD,uBAAC,cAAI,IACD,IAAI,EAAE,IAAI,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,EAAE,KAAK,EAC/B,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,CAAC,EACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,GAC3D,EACF,gCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,CAAC,YAAG,QAAQ,GAAO,IAC3E,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport type {ClassNameProps, IconWrapperProps} from '../../models';\nimport {block} from '../../utils';\nimport Icon from '../Icon/Icon';\n\nimport './IconWrapper.scss';\nconst b = block('icon-wrapper');\n\nconst IconWrapper = (props: React.PropsWithChildren<IconWrapperProps> & ClassNameProps) => {\n const {icon, children, className, size, gravityIcon} = props;\n if (!icon && !gravityIcon) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n const iconPosition = icon?.position;\n\n const gravityIconPosition = gravityIcon?.position;\n\n const position = gravityIconPosition || iconPosition;\n\n return (\n <div className={b({['icon-position']: position}, className)}>\n <Icon\n icon={icon?.value}\n gravityIcon={gravityIcon?.value}\n containerClassName={b('icon-container')}\n className={b('icon', {['icon-position']: position, size})}\n />\n <div className={b('content', {['icon-position']: position})}>{children}</div>\n </div>\n );\n};\n\nexport default IconWrapper;\n"]}
1
+ {"version":3,"file":"IconWrapper.js","sourceRoot":"../../../../src","sources":["components/IconWrapper/IconWrapper.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAG/B,gDAAkC;AAClC,mEAAgC;AAGhC,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,KAAiE,EAAE,EAAE;IACtF,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,uBAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;IACvD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAC;IAEpC,MAAM,mBAAmB,GAAG,WAAW,EAAE,QAAQ,CAAC;IAElD,MAAM,QAAQ,GAAG,mBAAmB,IAAI,YAAY,CAAC;IAErD,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,EAAE,SAAS,CAAC,aACvD,uBAAC,cAAI,IACD,IAAI,EAAE,IAAI,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,EAAE,KAAK,EAC/B,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,CAAC,EACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;oBACjB,CAAC,eAAe,CAAC,EAAE,QAAQ;oBAC3B,IAAI;oBACJ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;iBACzC,CAAC,GACJ,EACF,gCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,CAAC,YAAG,QAAQ,GAAO,IAC3E,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport type {ClassNameProps, IconWrapperProps} from '../../models';\nimport {block} from '../../utils';\nimport Icon from '../Icon/Icon';\n\nimport './IconWrapper.scss';\nconst b = block('icon-wrapper');\n\nconst IconWrapper = (props: React.PropsWithChildren<IconWrapperProps> & ClassNameProps) => {\n const {icon, children, className, size, gravityIcon} = props;\n if (!icon && !gravityIcon) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n const iconPosition = icon?.position;\n\n const gravityIconPosition = gravityIcon?.position;\n\n const position = gravityIconPosition || iconPosition;\n\n return (\n <div className={b({['icon-position']: position}, className)}>\n <Icon\n icon={icon?.value}\n gravityIcon={gravityIcon?.value}\n containerClassName={b('icon-container')}\n className={b('icon', {\n ['icon-position']: position,\n size,\n ['gravity-icon']: Boolean(gravityIcon),\n })}\n />\n <div className={b('content', {['icon-position']: position})}>{children}</div>\n </div>\n );\n};\n\nexport default IconWrapper;\n"]}
@@ -0,0 +1,3 @@
1
+ import { IconData } from '@gravity-ui/uikit';
2
+ export declare function getGravityIcon(iconName: string): IconData | undefined;
3
+ export declare function hasGravityIcon(iconName: string): boolean;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGravityIcon = getGravityIcon;
4
+ exports.hasGravityIcon = hasGravityIcon;
5
+ const tslib_1 = require("tslib");
6
+ const GravityIcons = tslib_1.__importStar(require("@gravity-ui/icons"));
7
+ function getGravityIcon(iconName) {
8
+ if (hasGravityIcon(iconName)) {
9
+ return GravityIcons[iconName];
10
+ }
11
+ return undefined;
12
+ }
13
+ function hasGravityIcon(iconName) {
14
+ return iconName in GravityIcons;
15
+ }
16
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"../../../src","sources":["utils/icons.ts"],"names":[],"mappings":";;AAGA,wCAMC;AAED,wCAEC;;AAbD,wEAAkD;AAGlD,SAAgB,cAAc,CAAC,QAAgB;IAC3C,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAQ,YAAyC,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAgB,cAAc,CAAC,QAAgB;IAC3C,OAAO,QAAQ,IAAI,YAAY,CAAC;AACpC,CAAC","sourcesContent":["import * as GravityIcons from '@gravity-ui/icons';\nimport {IconData} from '@gravity-ui/uikit';\n\nexport function getGravityIcon(iconName: string): IconData | undefined {\n if (hasGravityIcon(iconName)) {\n return (GravityIcons as Record<string, IconData>)[iconName];\n }\n\n return undefined;\n}\n\nexport function hasGravityIcon(iconName: string): boolean {\n return iconName in GravityIcons;\n}\n"]}
@@ -5,5 +5,6 @@ export * from "./url.js";
5
5
  export * from "./cn.js";
6
6
  export * from "./url.js";
7
7
  export * from "./theme.js";
8
+ export * from "./icons.js";
8
9
  export type { HubspotEventData, HubspotEventHandlers, HubspotEventName } from "./hubspot.js";
9
10
  export { isHubspotEventData } from "./hubspot.js";
@@ -9,6 +9,7 @@ tslib_1.__exportStar(require("./url.js"), exports);
9
9
  tslib_1.__exportStar(require("./cn.js"), exports);
10
10
  tslib_1.__exportStar(require("./url.js"), exports);
11
11
  tslib_1.__exportStar(require("./theme.js"), exports);
12
+ tslib_1.__exportStar(require("./icons.js"), exports);
12
13
  var hubspot_1 = require("./hubspot.js");
13
14
  Object.defineProperty(exports, "isHubspotEventData", { enumerable: true, get: function () { return hubspot_1.isHubspotEventData; } });
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":";;;;AAAA,sDAAyB;AACzB,yDAA4B;AAC5B,sDAAyB;AACzB,mDAAsB;AACtB,kDAAqB;AACrB,mDAAsB;AACtB,qDAAwB;AAGxB,wCAA6C;AAArC,6GAAA,kBAAkB,OAAA","sourcesContent":["export * from './common';\nexport * from './analytics';\nexport * from './blocks';\nexport * from './url';\nexport * from './cn';\nexport * from './url';\nexport * from './theme';\n\nexport type {HubspotEventData, HubspotEventHandlers, HubspotEventName} from './hubspot';\nexport {isHubspotEventData} from './hubspot';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":";;;;AAAA,sDAAyB;AACzB,yDAA4B;AAC5B,sDAAyB;AACzB,mDAAsB;AACtB,kDAAqB;AACrB,mDAAsB;AACtB,qDAAwB;AACxB,qDAAwB;AAGxB,wCAA6C;AAArC,6GAAA,kBAAkB,OAAA","sourcesContent":["export * from './common';\nexport * from './analytics';\nexport * from './blocks';\nexport * from './url';\nexport * from './cn';\nexport * from './url';\nexport * from './theme';\nexport * from './icons';\n\nexport type {HubspotEventData, HubspotEventHandlers, HubspotEventName} from './hubspot';\nexport {isHubspotEventData} from './hubspot';\n"]}
@@ -7,6 +7,7 @@ import { useAnalytics } from "../../hooks/index.js";
7
7
  import { Github } from "../../icons/index.js";
8
8
  import { DefaultEventNames } from "../../models/index.js";
9
9
  import { block, setUrlTld } from "../../utils/index.js";
10
+ import { getGravityIcon } from "../../utils/icons.js";
10
11
  import { i18n } from "./i18n/index.js";
11
12
  import { ICON_QA, toCommonSize, toCommonView } from "./utils.js";
12
13
  import './Button.css';
@@ -35,8 +36,9 @@ const Button = (props) => {
35
36
  alt: img.alt,
36
37
  }
37
38
  : { url: img, position: defaultImgPosition };
39
+ const { position, iconData, iconSize, className: iconClassName, url: imgUrl, alt } = buttonImg;
38
40
  const buttonClass = img
39
- ? b({ position: buttonImg.position, ...buttonModifiers }, className)
41
+ ? b({ position, ...buttonModifiers }, className)
40
42
  : b({ ...buttonModifiers }, className);
41
43
  const buttonProps = {
42
44
  ...rest,
@@ -49,13 +51,19 @@ const Button = (props) => {
49
51
  }
50
52
  let icon;
51
53
  let image;
52
- if (img && buttonImg.iconData) {
53
- const iconSize = buttonImg.iconSize;
54
- const iconClassName = buttonImg.className ? b('icon', buttonImg.className) : b('icon');
55
- icon = (_jsx(Icon, { className: iconClassName, data: buttonImg.iconData, size: iconSize, qa: ICON_QA }));
54
+ if (img && iconData) {
55
+ let finalIconData = iconData;
56
+ if (typeof iconData === 'string') {
57
+ const gravityIcon = getGravityIcon(iconData);
58
+ if (gravityIcon) {
59
+ finalIconData = gravityIcon;
60
+ }
61
+ }
62
+ const finalIconClassName = iconClassName ? b('icon', iconClassName) : b('icon');
63
+ icon = (_jsx(Icon, { className: finalIconClassName, data: finalIconData, size: iconSize, qa: ICON_QA }));
56
64
  }
57
- else if (img && buttonImg.url) {
58
- image = (_jsx("img", { className: b('image'), width: buttonImg.iconSize || DEFAULT_IMG_SIZE, height: buttonImg.iconSize || DEFAULT_IMG_SIZE, src: buttonImg.url, alt: buttonImg.alt || i18n('image-alt') }));
65
+ else if (img && imgUrl) {
66
+ image = (_jsx("img", { className: b('image'), width: iconSize || DEFAULT_IMG_SIZE, height: iconSize || DEFAULT_IMG_SIZE, src: imgUrl, alt: alt || i18n('image-alt') }));
59
67
  }
60
68
  // Special handling for github theme (for backwards compatibility)
61
69
  if (theme === 'github') {
@@ -63,7 +71,7 @@ const Button = (props) => {
63
71
  image = undefined;
64
72
  }
65
73
  const buttonTheme = theme === 'scale' ? 'accent' : theme;
66
- return (_jsxs(CommonButton, { className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), title: urlTitle, width: width, ...buttonProps, children: [icon && buttonImg.position === 'left' ? icon : null, _jsxs("span", { className: b('content'), children: [image && buttonImg.position === 'left' ? image : null, _jsx("span", { className: b('text'), children: text }), image && buttonImg.position === 'right' ? image : null] }), icon && buttonImg.position === 'right' ? icon : null] }));
74
+ return (_jsxs(CommonButton, { className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), title: urlTitle, width: width, ...buttonProps, children: [icon && position === 'left' ? icon : null, _jsxs("span", { className: b('content'), children: [image && position === 'left' ? image : null, _jsx("span", { className: b('text'), children: text }), image && position === 'right' ? image : null] }), icon && position === 'right' ? icon : null] }));
67
75
  };
68
76
  export default Button;
69
77
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {StoreBadge} from '@gravity-ui/components';\nimport {\n Button as CommonButton,\n Icon,\n Platform,\n ButtonProps as UIKitButtonProps,\n} from '@gravity-ui/uikit';\n\nimport {LocaleContext} from '../../context/localeContext/localeContext';\nimport {useAnalytics} from '../../hooks';\nimport {Github} from '../../icons';\nimport {ButtonProps as ButtonParams, DefaultEventNames, QAProps} from '../../models';\nimport {block, setUrlTld} from '../../utils';\n\nimport {i18n} from './i18n';\nimport {ICON_QA, OldButtonSize, OldButtonTheme, toCommonSize, toCommonView} from './utils';\n\nimport './Button.scss';\n\nconst DEFAULT_IMG_SIZE = 16;\n\nexport interface ButtonProps extends Omit<ButtonParams, 'url'>, QAProps {\n className?: string;\n id?: string;\n url?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nconst b = block('button-block');\n\n// eslint-disable-next-line complexity\nconst Button = (props: ButtonProps) => {\n const {tld} = React.useContext(LocaleContext);\n const {\n className,\n analyticsEvents,\n size = 'l',\n theme = 'normal',\n url,\n urlTitle,\n img,\n onClick: onClickOrigin,\n text,\n width,\n ...rest\n } = props;\n const defaultImgPosition = 'left';\n const handleAnalytics = useAnalytics(DefaultEventNames.Button, url);\n const onClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n handleAnalytics(analyticsEvents);\n\n if (onClickOrigin) {\n onClickOrigin(e);\n }\n },\n [handleAnalytics, analyticsEvents, onClickOrigin],\n );\n\n const buttonModifiers = {size, theme, width};\n\n const buttonImg =\n img instanceof Object\n ? {\n url: img.url,\n iconData: img.iconData,\n iconSize: img.iconSize,\n className: img.className,\n position: img.position || defaultImgPosition,\n alt: img.alt,\n }\n : {url: img, position: defaultImgPosition};\n\n const buttonClass = img\n ? b({position: buttonImg.position, ...buttonModifiers}, className)\n : b({...buttonModifiers}, className);\n\n const buttonProps = {\n ...rest,\n href: url ? setUrlTld(url, tld) : undefined,\n onClick,\n };\n\n if (theme === 'app-store' || theme === 'google-play') {\n const platform = theme === 'app-store' ? Platform.IOS : Platform.ANDROID;\n\n return <StoreBadge className={buttonClass} platform={platform} href={url as string} />;\n }\n\n let icon;\n let image;\n\n if (img && buttonImg.iconData) {\n const iconSize = buttonImg.iconSize;\n const iconClassName = buttonImg.className ? b('icon', buttonImg.className) : b('icon');\n icon = (\n <Icon\n className={iconClassName}\n data={buttonImg.iconData}\n size={iconSize}\n qa={ICON_QA}\n />\n );\n } else if (img && buttonImg.url) {\n image = (\n <img\n className={b('image')}\n width={buttonImg.iconSize || DEFAULT_IMG_SIZE}\n height={buttonImg.iconSize || DEFAULT_IMG_SIZE}\n src={buttonImg.url}\n alt={buttonImg.alt || i18n('image-alt')}\n />\n );\n }\n\n // Special handling for github theme (for backwards compatibility)\n if (theme === 'github') {\n icon = <Icon className={b('icon')} data={Github} size={24} qa={ICON_QA} />;\n image = undefined;\n }\n\n const buttonTheme = theme === 'scale' ? 'accent' : theme;\n\n return (\n <CommonButton\n className={buttonClass}\n view={toCommonView(buttonTheme as OldButtonTheme)}\n size={toCommonSize(size as OldButtonSize)}\n title={urlTitle}\n width={width}\n {...(buttonProps as UIKitButtonProps)}\n >\n {icon && buttonImg.position === 'left' ? icon : null}\n <span className={b('content')}>\n {image && buttonImg.position === 'left' ? image : null}\n <span className={b('text')}>{text}</span>\n {image && buttonImg.position === 'right' ? image : null}\n </span>\n {icon && buttonImg.position === 'right' ? icon : null}\n </CommonButton>\n );\n};\n\nexport default Button;\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {StoreBadge} from '@gravity-ui/components';\nimport {\n Button as CommonButton,\n Icon,\n Platform,\n ButtonProps as UIKitButtonProps,\n} from '@gravity-ui/uikit';\n\nimport {LocaleContext} from '../../context/localeContext/localeContext';\nimport {useAnalytics} from '../../hooks';\nimport {Github} from '../../icons';\nimport {ButtonProps as ButtonParams, DefaultEventNames, QAProps} from '../../models';\nimport {block, setUrlTld} from '../../utils';\nimport {getGravityIcon} from '../../utils/icons';\n\nimport {i18n} from './i18n';\nimport {ICON_QA, OldButtonSize, OldButtonTheme, toCommonSize, toCommonView} from './utils';\n\nimport './Button.scss';\n\nconst DEFAULT_IMG_SIZE = 16;\n\nexport interface ButtonProps extends Omit<ButtonParams, 'url'>, QAProps {\n className?: string;\n id?: string;\n url?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nconst b = block('button-block');\n\n// eslint-disable-next-line complexity\nconst Button = (props: ButtonProps) => {\n const {tld} = React.useContext(LocaleContext);\n const {\n className,\n analyticsEvents,\n size = 'l',\n theme = 'normal',\n url,\n urlTitle,\n img,\n onClick: onClickOrigin,\n text,\n width,\n ...rest\n } = props;\n const defaultImgPosition = 'left';\n const handleAnalytics = useAnalytics(DefaultEventNames.Button, url);\n const onClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n handleAnalytics(analyticsEvents);\n\n if (onClickOrigin) {\n onClickOrigin(e);\n }\n },\n [handleAnalytics, analyticsEvents, onClickOrigin],\n );\n\n const buttonModifiers = {size, theme, width};\n\n const buttonImg =\n img instanceof Object\n ? {\n url: img.url,\n iconData: img.iconData,\n iconSize: img.iconSize,\n className: img.className,\n position: img.position || defaultImgPosition,\n alt: img.alt,\n }\n : {url: img, position: defaultImgPosition};\n\n const {position, iconData, iconSize, className: iconClassName, url: imgUrl, alt} = buttonImg;\n\n const buttonClass = img\n ? b({position, ...buttonModifiers}, className)\n : b({...buttonModifiers}, className);\n\n const buttonProps = {\n ...rest,\n href: url ? setUrlTld(url, tld) : undefined,\n onClick,\n };\n\n if (theme === 'app-store' || theme === 'google-play') {\n const platform = theme === 'app-store' ? Platform.IOS : Platform.ANDROID;\n\n return <StoreBadge className={buttonClass} platform={platform} href={url as string} />;\n }\n\n let icon;\n let image;\n\n if (img && iconData) {\n let finalIconData = iconData;\n\n if (typeof iconData === 'string') {\n const gravityIcon = getGravityIcon(iconData);\n if (gravityIcon) {\n finalIconData = gravityIcon;\n }\n }\n\n const finalIconClassName = iconClassName ? b('icon', iconClassName) : b('icon');\n icon = (\n <Icon\n className={finalIconClassName}\n data={finalIconData}\n size={iconSize}\n qa={ICON_QA}\n />\n );\n } else if (img && imgUrl) {\n image = (\n <img\n className={b('image')}\n width={iconSize || DEFAULT_IMG_SIZE}\n height={iconSize || DEFAULT_IMG_SIZE}\n src={imgUrl}\n alt={alt || i18n('image-alt')}\n />\n );\n }\n\n // Special handling for github theme (for backwards compatibility)\n if (theme === 'github') {\n icon = <Icon className={b('icon')} data={Github} size={24} qa={ICON_QA} />;\n image = undefined;\n }\n\n const buttonTheme = theme === 'scale' ? 'accent' : theme;\n\n return (\n <CommonButton\n className={buttonClass}\n view={toCommonView(buttonTheme as OldButtonTheme)}\n size={toCommonSize(size as OldButtonSize)}\n title={urlTitle}\n width={width}\n {...(buttonProps as UIKitButtonProps)}\n >\n {icon && position === 'left' ? icon : null}\n <span className={b('content')}>\n {image && position === 'left' ? image : null}\n <span className={b('text')}>{text}</span>\n {image && position === 'right' ? image : null}\n </span>\n {icon && position === 'right' ? icon : null}\n </CommonButton>\n );\n};\n\nexport default Button;\n"]}
@@ -14,10 +14,12 @@ unpredictable css rules order in build */
14
14
  max-width: 100%;
15
15
  margin-bottom: 12px;
16
16
  height: 32px;
17
- width: 32px;
18
17
  object-fit: contain;
19
18
  display: block;
20
19
  }
20
+ .pc-icon-wrapper__icon_gravity-icon {
21
+ width: 32px;
22
+ }
21
23
  .pc-icon-wrapper__icon_icon-position_left {
22
24
  height: 22px;
23
25
  width: 22px;
@@ -12,7 +12,11 @@ const IconWrapper = (props) => {
12
12
  const iconPosition = icon?.position;
13
13
  const gravityIconPosition = gravityIcon?.position;
14
14
  const position = gravityIconPosition || iconPosition;
15
- return (_jsxs("div", { className: b({ ['icon-position']: position }, className), children: [_jsx(Icon, { icon: icon?.value, gravityIcon: gravityIcon?.value, containerClassName: b('icon-container'), className: b('icon', { ['icon-position']: position, size }) }), _jsx("div", { className: b('content', { ['icon-position']: position }), children: children })] }));
15
+ return (_jsxs("div", { className: b({ ['icon-position']: position }, className), children: [_jsx(Icon, { icon: icon?.value, gravityIcon: gravityIcon?.value, containerClassName: b('icon-container'), className: b('icon', {
16
+ ['icon-position']: position,
17
+ size,
18
+ ['gravity-icon']: Boolean(gravityIcon),
19
+ }) }), _jsx("div", { className: b('content', { ['icon-position']: position }), children: children })] }));
16
20
  };
17
21
  export default IconWrapper;
18
22
  //# sourceMappingURL=IconWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconWrapper.js","sourceRoot":"../../../../src","sources":["components/IconWrapper/IconWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,KAAK,EAAC,6BAAoB;AAClC,OAAO,IAAI,wBAAqB;AAEhC,OAAO,mBAAmB,CAAC;AAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,KAAiE,EAAE,EAAE;IACtF,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;IACvD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAC;IAEpC,MAAM,mBAAmB,GAAG,WAAW,EAAE,QAAQ,CAAC;IAElD,MAAM,QAAQ,GAAG,mBAAmB,IAAI,YAAY,CAAC;IAErD,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,EAAE,SAAS,CAAC,aACvD,KAAC,IAAI,IACD,IAAI,EAAE,IAAI,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,EAAE,KAAK,EAC/B,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,CAAC,EACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,GAC3D,EACF,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,CAAC,YAAG,QAAQ,GAAO,IAC3E,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport type {ClassNameProps, IconWrapperProps} from '../../models';\nimport {block} from '../../utils';\nimport Icon from '../Icon/Icon';\n\nimport './IconWrapper.scss';\nconst b = block('icon-wrapper');\n\nconst IconWrapper = (props: React.PropsWithChildren<IconWrapperProps> & ClassNameProps) => {\n const {icon, children, className, size, gravityIcon} = props;\n if (!icon && !gravityIcon) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n const iconPosition = icon?.position;\n\n const gravityIconPosition = gravityIcon?.position;\n\n const position = gravityIconPosition || iconPosition;\n\n return (\n <div className={b({['icon-position']: position}, className)}>\n <Icon\n icon={icon?.value}\n gravityIcon={gravityIcon?.value}\n containerClassName={b('icon-container')}\n className={b('icon', {['icon-position']: position, size})}\n />\n <div className={b('content', {['icon-position']: position})}>{children}</div>\n </div>\n );\n};\n\nexport default IconWrapper;\n"]}
1
+ {"version":3,"file":"IconWrapper.js","sourceRoot":"../../../../src","sources":["components/IconWrapper/IconWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,KAAK,EAAC,6BAAoB;AAClC,OAAO,IAAI,wBAAqB;AAEhC,OAAO,mBAAmB,CAAC;AAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,KAAiE,EAAE,EAAE;IACtF,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;IACvD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAC;IAEpC,MAAM,mBAAmB,GAAG,WAAW,EAAE,QAAQ,CAAC;IAElD,MAAM,QAAQ,GAAG,mBAAmB,IAAI,YAAY,CAAC;IAErD,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,EAAE,SAAS,CAAC,aACvD,KAAC,IAAI,IACD,IAAI,EAAE,IAAI,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,EAAE,KAAK,EAC/B,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,CAAC,EACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;oBACjB,CAAC,eAAe,CAAC,EAAE,QAAQ;oBAC3B,IAAI;oBACJ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;iBACzC,CAAC,GACJ,EACF,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAC,CAAC,YAAG,QAAQ,GAAO,IAC3E,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport type {ClassNameProps, IconWrapperProps} from '../../models';\nimport {block} from '../../utils';\nimport Icon from '../Icon/Icon';\n\nimport './IconWrapper.scss';\nconst b = block('icon-wrapper');\n\nconst IconWrapper = (props: React.PropsWithChildren<IconWrapperProps> & ClassNameProps) => {\n const {icon, children, className, size, gravityIcon} = props;\n if (!icon && !gravityIcon) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n const iconPosition = icon?.position;\n\n const gravityIconPosition = gravityIcon?.position;\n\n const position = gravityIconPosition || iconPosition;\n\n return (\n <div className={b({['icon-position']: position}, className)}>\n <Icon\n icon={icon?.value}\n gravityIcon={gravityIcon?.value}\n containerClassName={b('icon-container')}\n className={b('icon', {\n ['icon-position']: position,\n size,\n ['gravity-icon']: Boolean(gravityIcon),\n })}\n />\n <div className={b('content', {['icon-position']: position})}>{children}</div>\n </div>\n );\n};\n\nexport default IconWrapper;\n"]}
@@ -0,0 +1,3 @@
1
+ import { IconData } from '@gravity-ui/uikit';
2
+ export declare function getGravityIcon(iconName: string): IconData | undefined;
3
+ export declare function hasGravityIcon(iconName: string): boolean;
@@ -0,0 +1,11 @@
1
+ import * as GravityIcons from '@gravity-ui/icons';
2
+ export function getGravityIcon(iconName) {
3
+ if (hasGravityIcon(iconName)) {
4
+ return GravityIcons[iconName];
5
+ }
6
+ return undefined;
7
+ }
8
+ export function hasGravityIcon(iconName) {
9
+ return iconName in GravityIcons;
10
+ }
11
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"../../../src","sources":["utils/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAGlD,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC3C,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAQ,YAAyC,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC3C,OAAO,QAAQ,IAAI,YAAY,CAAC;AACpC,CAAC","sourcesContent":["import * as GravityIcons from '@gravity-ui/icons';\nimport {IconData} from '@gravity-ui/uikit';\n\nexport function getGravityIcon(iconName: string): IconData | undefined {\n if (hasGravityIcon(iconName)) {\n return (GravityIcons as Record<string, IconData>)[iconName];\n }\n\n return undefined;\n}\n\nexport function hasGravityIcon(iconName: string): boolean {\n return iconName in GravityIcons;\n}\n"]}
@@ -5,5 +5,6 @@ export * from "./url.js";
5
5
  export * from "./cn.js";
6
6
  export * from "./url.js";
7
7
  export * from "./theme.js";
8
+ export * from "./icons.js";
8
9
  export type { HubspotEventData, HubspotEventHandlers, HubspotEventName } from "./hubspot.js";
9
10
  export { isHubspotEventData } from "./hubspot.js";
@@ -5,5 +5,6 @@ export * from "./url.js";
5
5
  export * from "./cn.js";
6
6
  export * from "./url.js";
7
7
  export * from "./theme.js";
8
+ export * from "./icons.js";
8
9
  export { isHubspotEventData } from "./hubspot.js";
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,4BAAyB;AACzB,+BAA4B;AAC5B,4BAAyB;AACzB,yBAAsB;AACtB,wBAAqB;AACrB,yBAAsB;AACtB,2BAAwB;AAGxB,OAAO,EAAC,kBAAkB,EAAC,qBAAkB","sourcesContent":["export * from './common';\nexport * from './analytics';\nexport * from './blocks';\nexport * from './url';\nexport * from './cn';\nexport * from './url';\nexport * from './theme';\n\nexport type {HubspotEventData, HubspotEventHandlers, HubspotEventName} from './hubspot';\nexport {isHubspotEventData} from './hubspot';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,4BAAyB;AACzB,+BAA4B;AAC5B,4BAAyB;AACzB,yBAAsB;AACtB,wBAAqB;AACrB,yBAAsB;AACtB,2BAAwB;AACxB,2BAAwB;AAGxB,OAAO,EAAC,kBAAkB,EAAC,qBAAkB","sourcesContent":["export * from './common';\nexport * from './analytics';\nexport * from './blocks';\nexport * from './url';\nexport * from './cn';\nexport * from './url';\nexport * from './theme';\nexport * from './icons';\n\nexport type {HubspotEventData, HubspotEventHandlers, HubspotEventName} from './hubspot';\nexport {isHubspotEventData} from './hubspot';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "7.9.0",
3
+ "version": "7.10.1",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -0,0 +1,3 @@
1
+ import { IconData } from '@gravity-ui/uikit';
2
+ export declare function getGravityIcon(iconName: string): IconData | undefined;
3
+ export declare function hasGravityIcon(iconName: string): boolean;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getGravityIcon = getGravityIcon;
37
+ exports.hasGravityIcon = hasGravityIcon;
38
+ const GravityIcons = __importStar(require("@gravity-ui/icons"));
39
+ function getGravityIcon(iconName) {
40
+ if (hasGravityIcon(iconName)) {
41
+ return GravityIcons[iconName];
42
+ }
43
+ return undefined;
44
+ }
45
+ function hasGravityIcon(iconName) {
46
+ return iconName in GravityIcons;
47
+ }
@@ -5,5 +5,6 @@ export * from './url';
5
5
  export * from './cn';
6
6
  export * from './url';
7
7
  export * from './theme';
8
+ export * from './icons';
8
9
  export type { HubspotEventData, HubspotEventHandlers, HubspotEventName } from './hubspot';
9
10
  export { isHubspotEventData } from './hubspot';
@@ -22,5 +22,6 @@ __exportStar(require("./url"), exports);
22
22
  __exportStar(require("./cn"), exports);
23
23
  __exportStar(require("./url"), exports);
24
24
  __exportStar(require("./theme"), exports);
25
+ __exportStar(require("./icons"), exports);
25
26
  var hubspot_1 = require("./hubspot");
26
27
  Object.defineProperty(exports, "isHubspotEventData", { enumerable: true, get: function () { return hubspot_1.isHubspotEventData; } });