@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.
- package/build/cjs/components/Button/Button.js +16 -8
- package/build/cjs/components/Button/Button.js.map +1 -1
- package/build/cjs/components/IconWrapper/IconWrapper.css +3 -1
- package/build/cjs/components/IconWrapper/IconWrapper.js +5 -1
- package/build/cjs/components/IconWrapper/IconWrapper.js.map +1 -1
- package/build/cjs/utils/icons.d.ts +3 -0
- package/build/cjs/utils/icons.js +16 -0
- package/build/cjs/utils/icons.js.map +1 -0
- package/build/cjs/utils/index.d.ts +1 -0
- package/build/cjs/utils/index.js +1 -0
- package/build/cjs/utils/index.js.map +1 -1
- package/build/esm/components/Button/Button.js +16 -8
- package/build/esm/components/Button/Button.js.map +1 -1
- package/build/esm/components/IconWrapper/IconWrapper.css +3 -1
- package/build/esm/components/IconWrapper/IconWrapper.js +5 -1
- package/build/esm/components/IconWrapper/IconWrapper.js.map +1 -1
- package/build/esm/utils/icons.d.ts +3 -0
- package/build/esm/utils/icons.js +11 -0
- package/build/esm/utils/icons.js.map +1 -0
- package/build/esm/utils/index.d.ts +1 -0
- package/build/esm/utils/index.js +1 -0
- package/build/esm/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/server/utils/icons.d.ts +3 -0
- package/server/utils/icons.js +47 -0
- package/server/utils/index.d.ts +1 -0
- package/server/utils/index.js +1 -0
|
@@ -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
|
|
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 &&
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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 &&
|
|
60
|
-
image = ((0, jsx_runtime_1.jsx)("img", { className: b('image'), width:
|
|
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 &&
|
|
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":";;;;AAAA,qDAA+B;AAE/B,uDAAkD;AAClD,6CAK2B;AAE3B,gFAAwE;AACxE,gDAAyC;AACzC,gDAAmC;AACnC,kDAAqF;AACrF,gDAA6C;
|
|
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', {
|
|
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,
|
|
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,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";
|
package/build/cjs/utils/index.js
CHANGED
|
@@ -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
|
|
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 &&
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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 &&
|
|
58
|
-
image = (_jsx("img", { className: b('image'), width:
|
|
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 &&
|
|
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":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EACH,MAAM,IAAI,YAAY,EACtB,IAAI,EACJ,QAAQ,GAEX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,aAAa,EAAC,qDAAkD;AACxE,OAAO,EAAC,YAAY,EAAC,6BAAoB;AACzC,OAAO,EAAC,MAAM,EAAC,6BAAoB;AACnC,OAAO,EAA8B,iBAAiB,EAAU,8BAAqB;AACrF,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,6BAAoB;
|
|
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', {
|
|
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,
|
|
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,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";
|
package/build/esm/utils/index.js
CHANGED
|
@@ -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
|
@@ -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
|
+
}
|
package/server/utils/index.d.ts
CHANGED
package/server/utils/index.js
CHANGED
|
@@ -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; } });
|