@megafon/ui-shared 6.10.0 → 6.11.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/dist/es/components/ButtonsBox/ButtonsBox.css +34 -0
- package/dist/es/components/ButtonsBox/ButtonsBox.d.ts +48 -0
- package/dist/es/components/ButtonsBox/ButtonsBox.js +89 -0
- package/dist/es/components/Container/Container.css +526 -1
- package/dist/es/components/Container/Container.d.ts +9 -0
- package/dist/es/components/Container/Container.js +14 -3
- package/dist/es/components/InfoCards/InfoCards.d.ts +4 -1
- package/dist/es/components/InfoCards/InfoCards.js +14 -5
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.css +30 -7
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.d.ts +4 -0
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.js +20 -10
- package/dist/es/components/InfoCards/types.d.ts +6 -1
- package/dist/es/components/PromoCards/PromoCards.d.ts +28 -0
- package/dist/es/components/PromoCards/PromoCards.js +90 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.css +157 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.d.ts +18 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.js +74 -0
- package/dist/es/components/PromoCards/types.d.ts +29 -0
- package/dist/es/components/PromoCards/types.js +0 -0
- package/dist/es/index.d.ts +3 -0
- package/dist/es/index.js +3 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.css +34 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.d.ts +48 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.js +110 -0
- package/dist/lib/components/Container/Container.css +526 -1
- package/dist/lib/components/Container/Container.d.ts +9 -0
- package/dist/lib/components/Container/Container.js +14 -3
- package/dist/lib/components/InfoCards/InfoCards.d.ts +4 -1
- package/dist/lib/components/InfoCards/InfoCards.js +16 -13
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.css +30 -7
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.d.ts +4 -0
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.js +19 -9
- package/dist/lib/components/InfoCards/types.d.ts +6 -1
- package/dist/lib/components/PromoCards/PromoCards.d.ts +28 -0
- package/dist/lib/components/PromoCards/PromoCards.js +113 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.css +157 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.d.ts +18 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.js +96 -0
- package/dist/lib/components/PromoCards/types.d.ts +29 -0
- package/dist/lib/components/PromoCards/types.js +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +24 -0
- package/package.json +3 -3
@@ -15,12 +15,21 @@ declare type Props = {
|
|
15
15
|
rootRef?: Ref<HTMLDivElement>;
|
16
16
|
/** Дополнительный класс корневого элемента */
|
17
17
|
className?: string;
|
18
|
+
/** Дополнительные классы для корневого и внутренних элементов */
|
19
|
+
classes?: {
|
20
|
+
root?: string;
|
21
|
+
inner?: string;
|
22
|
+
};
|
18
23
|
/** Цвет фона */
|
19
24
|
backgroundColor?: BackgroundColorType;
|
20
25
|
/** Отключить отступ сверху */
|
21
26
|
disablePaddingTop?: boolean;
|
22
27
|
/** Отключить отступ снизу */
|
23
28
|
disablePaddingBottom?: boolean;
|
29
|
+
/** Отключить скругление сверху */
|
30
|
+
disableRadiusTop?: boolean;
|
31
|
+
/** Отключить скругление снизу */
|
32
|
+
disableRadiusBottom?: boolean;
|
24
33
|
/** Включить тень в нижней части компонента */
|
25
34
|
bottomShadow?: boolean;
|
26
35
|
/** Предотвратить прохождение верхнего отступа дочернего компонента через верхнюю границу контейнера */
|
@@ -33,9 +33,12 @@ var Container = function Container(_ref) {
|
|
33
33
|
rootRef = _ref.rootRef,
|
34
34
|
id = _ref.id,
|
35
35
|
className = _ref.className,
|
36
|
+
classes = _ref.classes,
|
36
37
|
children = _ref.children,
|
37
38
|
disablePaddingTop = _ref.disablePaddingTop,
|
38
39
|
disablePaddingBottom = _ref.disablePaddingBottom,
|
40
|
+
disableRadiusTop = _ref.disableRadiusTop,
|
41
|
+
disableRadiusBottom = _ref.disableRadiusBottom,
|
39
42
|
_ref$bottomShadow = _ref.bottomShadow,
|
40
43
|
bottomShadow = _ref$bottomShadow === void 0 ? false : _ref$bottomShadow,
|
41
44
|
_ref$preventMarginTop = _ref.preventMarginTopCollapse,
|
@@ -45,26 +48,34 @@ var Container = function Container(_ref) {
|
|
45
48
|
'bg-color': backgroundColor,
|
46
49
|
'bottom-shadow': bottomShadow,
|
47
50
|
'disable-padding-top': disablePaddingTop,
|
48
|
-
'disable-padding-bottom': disablePaddingBottom
|
49
|
-
|
51
|
+
'disable-padding-bottom': disablePaddingBottom,
|
52
|
+
'disable-radius-top': disableRadiusTop,
|
53
|
+
'disable-radius-bottom': disableRadiusBottom
|
54
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
50
55
|
ref: rootRef,
|
51
56
|
id: id
|
52
57
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
53
58
|
className: cn('inner', {
|
54
59
|
prevent: preventMarginTopCollapse
|
55
|
-
})
|
60
|
+
}, [classes === null || classes === void 0 ? void 0 : classes.inner])
|
56
61
|
}, /*#__PURE__*/_react["default"].createElement(_uiCore.ContentArea, null, children)));
|
57
62
|
};
|
58
63
|
|
59
64
|
Container.propTypes = {
|
60
65
|
id: _propTypes["default"].string,
|
61
66
|
className: _propTypes["default"].string,
|
67
|
+
classes: _propTypes["default"].shape({
|
68
|
+
root: _propTypes["default"].string,
|
69
|
+
inner: _propTypes["default"].string
|
70
|
+
}),
|
62
71
|
backgroundColor: _propTypes["default"].oneOf(Object.values(BackgroundColors)),
|
63
72
|
rootRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].oneOfType([_propTypes["default"].shape({
|
64
73
|
current: _propTypes["default"].elementType
|
65
74
|
}), _propTypes["default"].any])]),
|
66
75
|
disablePaddingTop: _propTypes["default"].bool,
|
67
76
|
disablePaddingBottom: _propTypes["default"].bool,
|
77
|
+
disableRadiusTop: _propTypes["default"].bool,
|
78
|
+
disableRadiusBottom: _propTypes["default"].bool,
|
68
79
|
bottomShadow: _propTypes["default"].bool,
|
69
80
|
preventMarginTopCollapse: _propTypes["default"].bool
|
70
81
|
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import React, { Ref } from 'react';
|
2
2
|
import { IInfoCardData, IInfoCardSettings } from './types';
|
3
3
|
import './InfoCards.less';
|
4
4
|
export interface IInfoCards extends IInfoCardSettings {
|
@@ -8,6 +8,7 @@ export interface IInfoCards extends IInfoCardSettings {
|
|
8
8
|
classes?: {
|
9
9
|
root?: string;
|
10
10
|
card?: string;
|
11
|
+
cardTitle?: string;
|
11
12
|
};
|
12
13
|
/** Дополнительные data атрибуты к внутренним элементам */
|
13
14
|
dataAttrs?: {
|
@@ -16,6 +17,8 @@ export interface IInfoCards extends IInfoCardSettings {
|
|
16
17
|
};
|
17
18
|
/** Список карточек */
|
18
19
|
items: IInfoCardData[];
|
20
|
+
/** Ссылка на корневой элемент */
|
21
|
+
rootRef?: Ref<HTMLDivElement>;
|
19
22
|
}
|
20
23
|
declare const InfoCards: React.FC<IInfoCards>;
|
21
24
|
export default InfoCards;
|
@@ -1,7 +1,5 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
-
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
6
4
|
value: true
|
7
5
|
});
|
@@ -13,7 +11,7 @@ require("core-js/modules/es.array.map.js");
|
|
13
11
|
|
14
12
|
require("core-js/modules/es.array.concat.js");
|
15
13
|
|
16
|
-
var
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
17
15
|
|
18
16
|
var _uiHelpers = require("@megafon/ui-helpers");
|
19
17
|
|
@@ -21,10 +19,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
19
|
|
22
20
|
var _InfoCard = _interopRequireDefault(require("./components/InfoCard/InfoCard"));
|
23
21
|
|
24
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
25
|
-
|
26
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
27
|
-
|
28
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
29
23
|
|
30
24
|
var cn = (0, _uiHelpers.cnCreate)('mfui-v6-info-cards');
|
@@ -39,15 +33,17 @@ var InfoCards = function InfoCards(_ref) {
|
|
39
33
|
imgPosition = _ref$imgPosition === void 0 ? 'top-left' : _ref$imgPosition,
|
40
34
|
_ref$background = _ref.background,
|
41
35
|
background = _ref$background === void 0 ? 'stroke' : _ref$background,
|
42
|
-
dataAttrs = _ref.dataAttrs
|
43
|
-
|
36
|
+
dataAttrs = _ref.dataAttrs,
|
37
|
+
rootRef = _ref.rootRef;
|
38
|
+
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
44
39
|
className: cn({
|
45
40
|
size: size,
|
46
41
|
position: imgPosition,
|
47
42
|
background: background
|
48
|
-
}, [className, classes === null || classes === void 0 ? void 0 : classes.root])
|
43
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
44
|
+
ref: rootRef
|
49
45
|
}), items.map(function (item, i) {
|
50
|
-
return /*#__PURE__*/
|
46
|
+
return /*#__PURE__*/_react["default"].createElement(_InfoCard["default"], (0, _extends2["default"])({}, item, {
|
51
47
|
className: classes === null || classes === void 0 ? void 0 : classes.card,
|
52
48
|
size: size,
|
53
49
|
imgPosition: imgPosition,
|
@@ -55,6 +51,9 @@ var InfoCards = function InfoCards(_ref) {
|
|
55
51
|
dataAttrs: {
|
56
52
|
root: (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.card, i + 1)
|
57
53
|
},
|
54
|
+
classes: {
|
55
|
+
title: classes === null || classes === void 0 ? void 0 : classes.cardTitle
|
56
|
+
},
|
58
57
|
key: "".concat(item.title, "_").concat(i)
|
59
58
|
}));
|
60
59
|
}));
|
@@ -64,7 +63,8 @@ InfoCards.propTypes = {
|
|
64
63
|
className: _propTypes["default"].string,
|
65
64
|
classes: _propTypes["default"].shape({
|
66
65
|
root: _propTypes["default"].string,
|
67
|
-
card: _propTypes["default"].string
|
66
|
+
card: _propTypes["default"].string,
|
67
|
+
cardTitle: _propTypes["default"].string
|
68
68
|
}),
|
69
69
|
dataAttrs: _propTypes["default"].shape({
|
70
70
|
root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
|
@@ -82,7 +82,10 @@ InfoCards.propTypes = {
|
|
82
82
|
target: _propTypes["default"].oneOf(['_self', '_blank']),
|
83
83
|
rel: _propTypes["default"].string,
|
84
84
|
moreInfo: _propTypes["default"].string
|
85
|
-
}).isRequired).isRequired
|
85
|
+
}).isRequired).isRequired,
|
86
|
+
rootRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].oneOfType([_propTypes["default"].shape({
|
87
|
+
current: _propTypes["default"].elementType
|
88
|
+
}), _propTypes["default"].any])])
|
86
89
|
};
|
87
90
|
var _default = InfoCards;
|
88
91
|
exports["default"] = _default;
|
@@ -58,7 +58,10 @@ h5 {
|
|
58
58
|
-webkit-transition: color 0.3s;
|
59
59
|
transition: color 0.3s;
|
60
60
|
}
|
61
|
-
.mfui-v6-info-
|
61
|
+
.mfui-v6-info-card_active {
|
62
|
+
cursor: pointer;
|
63
|
+
}
|
64
|
+
.mfui-v6-info-card_active:hover .mfui-v6-info-card__more-info {
|
62
65
|
color: var(--brandGreen);
|
63
66
|
}
|
64
67
|
.mfui-v6-info-card__more-info-text {
|
@@ -195,6 +198,26 @@ h5 {
|
|
195
198
|
.mfui-v6-info-card_position_right-side .mfui-v6-info-card__more-info {
|
196
199
|
padding-top: 8px;
|
197
200
|
}
|
201
|
+
@media screen and (min-width: 768px) {
|
202
|
+
.mfui-v6-info-card_size_big.mfui-v6-info-card_align-center {
|
203
|
+
-webkit-box-align: center;
|
204
|
+
-ms-flex-align: center;
|
205
|
+
align-items: center;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
@media screen and (min-width: 768px) {
|
209
|
+
.mfui-v6-info-card_size_big.mfui-v6-info-card_align-center .mfui-v6-info-card__more-info {
|
210
|
+
margin-top: 0;
|
211
|
+
}
|
212
|
+
}
|
213
|
+
.mfui-v6-info-card_position_right-side.mfui-v6-info-card_align-center {
|
214
|
+
-webkit-box-align: center;
|
215
|
+
-ms-flex-align: center;
|
216
|
+
align-items: center;
|
217
|
+
}
|
218
|
+
.mfui-v6-info-card_position_right-side.mfui-v6-info-card_align-center .mfui-v6-info-card__more-info {
|
219
|
+
margin-top: 0;
|
220
|
+
}
|
198
221
|
.mfui-v6-info-card_background_stroke {
|
199
222
|
border: 1px solid var(--spbSky2);
|
200
223
|
}
|
@@ -218,20 +241,20 @@ h5 {
|
|
218
241
|
.mfui-v6-info-card_background_no {
|
219
242
|
padding: 0;
|
220
243
|
}
|
221
|
-
.mfui-v6-info-card_background_stroke.mfui-v6-info-
|
244
|
+
.mfui-v6-info-card_background_stroke.mfui-v6-info-card_active:hover {
|
222
245
|
background-color: var(--spbSky0);
|
223
246
|
}
|
224
|
-
.mfui-v6-info-card_background_shadow.mfui-v6-info-
|
225
|
-
.mfui-v6-info-card_background_white.mfui-v6-info-
|
247
|
+
.mfui-v6-info-card_background_shadow.mfui-v6-info-card_active:hover,
|
248
|
+
.mfui-v6-info-card_background_white.mfui-v6-info-card_active:hover {
|
226
249
|
-webkit-box-shadow: 0 8px 28px rgba(0, 0, 0, 0.1);
|
227
250
|
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.1);
|
228
251
|
}
|
229
|
-
.mfui-v6-info-card_background_gray.mfui-v6-info-
|
252
|
+
.mfui-v6-info-card_background_gray.mfui-v6-info-card_active:hover {
|
230
253
|
background-color: var(--spbSky1);
|
231
254
|
}
|
232
|
-
.mfui-v6-info-card_background_purple.mfui-v6-info-
|
255
|
+
.mfui-v6-info-card_background_purple.mfui-v6-info-card_active:hover {
|
233
256
|
background-color: var(--buttonHoverPurpleSoft);
|
234
257
|
}
|
235
|
-
.mfui-v6-info-card_background_green.mfui-v6-info-
|
258
|
+
.mfui-v6-info-card_background_green.mfui-v6-info-card_active:hover {
|
236
259
|
background-color: var(--buttonHoverGreenSoft);
|
237
260
|
}
|
@@ -3,6 +3,10 @@ import { IInfoCardData, IInfoCardSettings } from '../../types';
|
|
3
3
|
import './InfoCard.less';
|
4
4
|
export interface IInfoCard extends IInfoCardSettings, IInfoCardData {
|
5
5
|
className?: string;
|
6
|
+
classes?: {
|
7
|
+
root?: string;
|
8
|
+
title?: string;
|
9
|
+
};
|
6
10
|
dataAttrs?: {
|
7
11
|
root?: Record<string, string>;
|
8
12
|
title?: Record<string, string>;
|
@@ -55,20 +55,23 @@ var InfoCard = function InfoCard(_ref) {
|
|
55
55
|
href = _ref.href,
|
56
56
|
target = _ref.target,
|
57
57
|
rel = _ref.rel,
|
58
|
+
download = _ref.download,
|
58
59
|
moreInfo = _ref.moreInfo,
|
60
|
+
onClick = _ref.onClick,
|
59
61
|
_ref$size = _ref.size,
|
60
62
|
size = _ref$size === void 0 ? 'medium' : _ref$size,
|
61
|
-
|
62
|
-
imgPosition = _ref$imgPosition === void 0 ? 'right-side' : _ref$imgPosition,
|
63
|
+
imgPosition = _ref.imgPosition,
|
63
64
|
_ref$background = _ref.background,
|
64
65
|
background = _ref$background === void 0 ? 'stroke' : _ref$background,
|
65
|
-
dataAttrs = _ref.dataAttrs
|
66
|
+
dataAttrs = _ref.dataAttrs,
|
67
|
+
classes = _ref.classes;
|
66
68
|
var RootElement = href ? 'a' : 'div';
|
67
69
|
var isBigSize = size === 'big';
|
68
70
|
var finalImgPosition = isBigSize ? false : imgPosition;
|
69
71
|
var isInvalidBackground = background === 'no' && (imgPosition === 'right-side' || size === 'big');
|
70
72
|
var finalBackground = isInvalidBackground ? 'stroke' : background;
|
71
73
|
var isLink = !!href;
|
74
|
+
var isActive = isLink || !!onClick;
|
72
75
|
|
73
76
|
var renderArrowRight = function renderArrowRight() {
|
74
77
|
var ArrowRight = isBigSize ? ArrowRight24 : ArrowRight16;
|
@@ -81,12 +84,15 @@ var InfoCard = function InfoCard(_ref) {
|
|
81
84
|
href: isLink ? href : undefined,
|
82
85
|
target: isLink ? target : undefined,
|
83
86
|
rel: isLink ? (0, _setRelAttribute.setRelAttribute)(rel, target) : undefined,
|
87
|
+
download: isLink ? download : undefined,
|
88
|
+
onClick: onClick,
|
84
89
|
className: cn({
|
85
90
|
size: size,
|
86
91
|
position: finalImgPosition,
|
87
92
|
background: finalBackground,
|
88
|
-
|
89
|
-
|
93
|
+
active: isActive,
|
94
|
+
'align-center': !moreInfo
|
95
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root])
|
90
96
|
}), /*#__PURE__*/React.createElement("img", {
|
91
97
|
className: cn('image'),
|
92
98
|
src: imgSrc,
|
@@ -94,18 +100,22 @@ var InfoCard = function InfoCard(_ref) {
|
|
94
100
|
}), /*#__PURE__*/React.createElement("div", {
|
95
101
|
className: cn('content')
|
96
102
|
}, !!title && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title), {
|
97
|
-
className: cn('title')
|
98
|
-
}), title), !!description && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.description), {
|
103
|
+
className: cn('title', [classes === null || classes === void 0 ? void 0 : classes.title])
|
104
|
+
}), (0, _uiHelpers.convert)(title, {})), !!description && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.description), {
|
99
105
|
className: cn('description')
|
100
|
-
}), description), !!moreInfo && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreInfo), {
|
106
|
+
}), (0, _uiHelpers.convert)(description, {})), !!moreInfo && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreInfo), {
|
101
107
|
className: cn('more-info')
|
102
108
|
}), /*#__PURE__*/React.createElement("span", {
|
103
109
|
className: cn('more-info-text')
|
104
|
-
}, moreInfo),
|
110
|
+
}, (0, _uiHelpers.convert)(moreInfo, {})), isActive && renderArrowRight())));
|
105
111
|
};
|
106
112
|
|
107
113
|
InfoCard.propTypes = {
|
108
114
|
className: _propTypes["default"].string,
|
115
|
+
classes: _propTypes["default"].shape({
|
116
|
+
root: _propTypes["default"].string,
|
117
|
+
title: _propTypes["default"].string
|
118
|
+
}),
|
109
119
|
dataAttrs: _propTypes["default"].shape({
|
110
120
|
root: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
|
111
121
|
title: _propTypes["default"].objectOf(_propTypes["default"].string.isRequired),
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
export interface IInfoCardSettings {
|
2
3
|
/** Размер карточки */
|
3
4
|
size?: 'big' | 'medium' | 'small';
|
4
5
|
/** Расположение изображения */
|
5
6
|
imgPosition?: 'right-side' | 'top-left';
|
6
7
|
/** Фон карточки */
|
7
|
-
background?: 'shadow' | 'stroke' | 'gray' | 'green' | 'purple' | 'white' | '
|
8
|
+
background?: 'shadow' | 'stroke' | 'gray' | 'green' | 'purple' | 'white' | 'no';
|
8
9
|
}
|
9
10
|
export interface IInfoCardData {
|
10
11
|
/** Заголовок */
|
@@ -21,6 +22,10 @@ export interface IInfoCardData {
|
|
21
22
|
target?: '_self' | '_blank';
|
22
23
|
/** Атрибут rel ссылки */
|
23
24
|
rel?: string;
|
25
|
+
/** Добавление атрибута download для ссылки */
|
26
|
+
download?: boolean;
|
24
27
|
/** Дополнительная информация */
|
25
28
|
moreInfo?: string;
|
29
|
+
/** Обработчик клика */
|
30
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
26
31
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Carousel } from '@megafon/ui-core';
|
3
|
+
import { IPromoCardData, IPromoCardSettings } from './types';
|
4
|
+
declare type CarouselProps = React.ComponentProps<typeof Carousel>;
|
5
|
+
export interface IPromoCards extends IPromoCardSettings {
|
6
|
+
/** Список карточек. Минимальное количество 2 карточки */
|
7
|
+
items: IPromoCardData[];
|
8
|
+
/** Тема навигации для карусели */
|
9
|
+
carouselNavTheme?: CarouselProps['navTheme'];
|
10
|
+
/** Цвет градиента для карусели */
|
11
|
+
carouselGradientColor?: CarouselProps['gradientColor'];
|
12
|
+
/** Дополнительный css класс для корневого элемента */
|
13
|
+
className?: string;
|
14
|
+
/** Дополнительные css классы для корневого и внутренних элементов */
|
15
|
+
classes?: {
|
16
|
+
root?: string;
|
17
|
+
card?: string;
|
18
|
+
};
|
19
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
20
|
+
dataAttrs?: {
|
21
|
+
root?: Record<string, string>;
|
22
|
+
card?: Record<string, string>;
|
23
|
+
};
|
24
|
+
/** Ссылка на элемент */
|
25
|
+
rootRef?: React.Ref<HTMLDivElement>;
|
26
|
+
}
|
27
|
+
declare const PromoCards: React.FC<IPromoCards>;
|
28
|
+
export default PromoCards;
|
@@ -0,0 +1,113 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports["default"] = void 0;
|
9
|
+
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
11
|
+
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13
|
+
|
14
|
+
require("core-js/modules/es.array.map.js");
|
15
|
+
|
16
|
+
var React = _interopRequireWildcard(require("react"));
|
17
|
+
|
18
|
+
var _uiCore = require("@megafon/ui-core");
|
19
|
+
|
20
|
+
var _uiHelpers = require("@megafon/ui-helpers");
|
21
|
+
|
22
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
23
|
+
|
24
|
+
var _PromoCard = _interopRequireDefault(require("./components/PromoCard/PromoCard"));
|
25
|
+
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
27
|
+
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
29
|
+
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
31
|
+
|
32
|
+
var _slidesSettings;
|
33
|
+
|
34
|
+
var slidesSettings = (_slidesSettings = {}, (0, _defineProperty2["default"])(_slidesSettings, _uiHelpers.breakpoints.MOBILE_SMALL_START, {
|
35
|
+
slidesPerView: 1,
|
36
|
+
spaceBetween: 16
|
37
|
+
}), (0, _defineProperty2["default"])(_slidesSettings, _uiHelpers.breakpoints.MOBILE_BIG_START, {
|
38
|
+
slidesPerView: 2,
|
39
|
+
spaceBetween: 20
|
40
|
+
}), (0, _defineProperty2["default"])(_slidesSettings, _uiHelpers.breakpoints.DESKTOP_SMALL_START, {
|
41
|
+
slidesPerView: 3,
|
42
|
+
spaceBetween: 20
|
43
|
+
}), _slidesSettings);
|
44
|
+
var MIN_ITEMS_COUNT = 2;
|
45
|
+
var cn = (0, _uiHelpers.cnCreate)('mfui-v6-promo-cards');
|
46
|
+
|
47
|
+
var PromoCards = function PromoCards(_ref) {
|
48
|
+
var items = _ref.items,
|
49
|
+
carouselNavTheme = _ref.carouselNavTheme,
|
50
|
+
carouselGradientColor = _ref.carouselGradientColor,
|
51
|
+
background = _ref.background,
|
52
|
+
dataAttrs = _ref.dataAttrs,
|
53
|
+
className = _ref.className,
|
54
|
+
classes = _ref.classes,
|
55
|
+
rootRef = _ref.rootRef;
|
56
|
+
|
57
|
+
if (items.length < MIN_ITEMS_COUNT) {
|
58
|
+
return null;
|
59
|
+
}
|
60
|
+
|
61
|
+
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
62
|
+
className: cn([className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
63
|
+
ref: rootRef
|
64
|
+
}), /*#__PURE__*/React.createElement(_uiCore.Carousel, {
|
65
|
+
slidesSettings: slidesSettings,
|
66
|
+
navTheme: carouselNavTheme,
|
67
|
+
gradient: true,
|
68
|
+
gradientColor: carouselGradientColor
|
69
|
+
}, items.map(function (item, i) {
|
70
|
+
return /*#__PURE__*/React.createElement(_PromoCard["default"], (0, _extends2["default"])({}, item, {
|
71
|
+
background: background,
|
72
|
+
dataAttrs: {
|
73
|
+
root: (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.card, i + 1)
|
74
|
+
},
|
75
|
+
className: cn([classes === null || classes === void 0 ? void 0 : classes.card]),
|
76
|
+
key: i + item.title
|
77
|
+
}));
|
78
|
+
})));
|
79
|
+
};
|
80
|
+
|
81
|
+
PromoCards.propTypes = {
|
82
|
+
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
83
|
+
title: _propTypes["default"].string.isRequired,
|
84
|
+
subtitle: _propTypes["default"].string,
|
85
|
+
link: _propTypes["default"].shape({
|
86
|
+
title: _propTypes["default"].string.isRequired,
|
87
|
+
href: _propTypes["default"].string.isRequired,
|
88
|
+
target: _propTypes["default"].oneOf(['_self', '_blank']),
|
89
|
+
rel: _propTypes["default"].string
|
90
|
+
}).isRequired,
|
91
|
+
image: _propTypes["default"].shape({
|
92
|
+
src: _propTypes["default"].string.isRequired,
|
93
|
+
src2x: _propTypes["default"].string,
|
94
|
+
alt: _propTypes["default"].string
|
95
|
+
}).isRequired,
|
96
|
+
logo: _propTypes["default"].shape({
|
97
|
+
src: _propTypes["default"].string,
|
98
|
+
alt: _propTypes["default"].string
|
99
|
+
}),
|
100
|
+
badge: _propTypes["default"].oneOf([_propTypes["default"].element, null])
|
101
|
+
}).isRequired).isRequired,
|
102
|
+
background: _propTypes["default"].oneOf(['white', 'gray', 'shadow']),
|
103
|
+
className: _propTypes["default"].string,
|
104
|
+
classes: _propTypes["default"].objectOf(_propTypes["default"].string),
|
105
|
+
dataAttrs: _propTypes["default"].objectOf(_propTypes["default"].object),
|
106
|
+
carouselNavTheme: _propTypes["default"].oneOf(['light', 'green']),
|
107
|
+
carouselGradientColor: _propTypes["default"].oneOf(['green', 'default', 'black', 'spbSky0', 'spbSky1', 'spbSky2']),
|
108
|
+
rootRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].oneOfType([_propTypes["default"].shape({
|
109
|
+
current: _propTypes["default"].elementType
|
110
|
+
}), _propTypes["default"].any])])
|
111
|
+
};
|
112
|
+
var _default = PromoCards;
|
113
|
+
exports["default"] = _default;
|
@@ -0,0 +1,157 @@
|
|
1
|
+
h1,
|
2
|
+
h2,
|
3
|
+
h3,
|
4
|
+
h4,
|
5
|
+
h5 {
|
6
|
+
margin: 0;
|
7
|
+
}
|
8
|
+
.mfui-v6-promo-card {
|
9
|
+
display: -webkit-box;
|
10
|
+
display: -ms-flexbox;
|
11
|
+
display: flex;
|
12
|
+
-webkit-box-orient: vertical;
|
13
|
+
-webkit-box-direction: normal;
|
14
|
+
-ms-flex-direction: column;
|
15
|
+
flex-direction: column;
|
16
|
+
min-height: 100%;
|
17
|
+
border-radius: 24px;
|
18
|
+
color: var(--content);
|
19
|
+
text-decoration: none;
|
20
|
+
background-color: var(--base);
|
21
|
+
cursor: pointer;
|
22
|
+
-webkit-transition: background-color, 0.3s, 0.3s, -webkit-box-shadow;
|
23
|
+
transition: background-color, 0.3s, 0.3s, -webkit-box-shadow;
|
24
|
+
transition: background-color, 0.3s, box-shadow, 0.3s;
|
25
|
+
transition: background-color, 0.3s, box-shadow, 0.3s, -webkit-box-shadow;
|
26
|
+
}
|
27
|
+
.mfui-v6-promo-card_background_shadow {
|
28
|
+
-webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
29
|
+
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
30
|
+
}
|
31
|
+
.mfui-v6-promo-card_background_white:hover,
|
32
|
+
.mfui-v6-promo-card_background_shadow:hover {
|
33
|
+
text-decoration: none;
|
34
|
+
-webkit-box-shadow: 0 8px 28px 0 rgba(0, 0, 0, 0.1);
|
35
|
+
box-shadow: 0 8px 28px 0 rgba(0, 0, 0, 0.1);
|
36
|
+
}
|
37
|
+
.mfui-v6-promo-card_background_gray {
|
38
|
+
background-color: var(--spbSky0);
|
39
|
+
}
|
40
|
+
.mfui-v6-promo-card_background_gray:hover {
|
41
|
+
text-decoration: none;
|
42
|
+
background-color: var(--spbSky1);
|
43
|
+
}
|
44
|
+
.mfui-v6-promo-card__image {
|
45
|
+
width: 100%;
|
46
|
+
border-radius: inherit;
|
47
|
+
vertical-align: top;
|
48
|
+
}
|
49
|
+
.mfui-v6-promo-card__content {
|
50
|
+
position: relative;
|
51
|
+
display: -webkit-box;
|
52
|
+
display: -ms-flexbox;
|
53
|
+
display: flex;
|
54
|
+
-webkit-box-orient: vertical;
|
55
|
+
-webkit-box-direction: normal;
|
56
|
+
-ms-flex-direction: column;
|
57
|
+
flex-direction: column;
|
58
|
+
-webkit-box-flex: 1;
|
59
|
+
-ms-flex-positive: 1;
|
60
|
+
flex-grow: 1;
|
61
|
+
padding: 32px 24px;
|
62
|
+
}
|
63
|
+
@media screen and (min-width: 1280px) {
|
64
|
+
.mfui-v6-promo-card__content {
|
65
|
+
padding: 32px;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
.mfui-v6-promo-card__badge {
|
69
|
+
position: absolute;
|
70
|
+
top: 0;
|
71
|
+
left: 24px;
|
72
|
+
translate: 0 -50%;
|
73
|
+
}
|
74
|
+
@media screen and (min-width: 1280px) {
|
75
|
+
.mfui-v6-promo-card__badge {
|
76
|
+
left: 32px;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
.mfui-v6-promo-card__logo {
|
80
|
+
position: absolute;
|
81
|
+
top: 0;
|
82
|
+
right: 44px;
|
83
|
+
border: 4px solid var(--base);
|
84
|
+
border-radius: 50%;
|
85
|
+
translate: 0 -50%;
|
86
|
+
background-color: var(--base);
|
87
|
+
-webkit-transition: border-color, 0.3s;
|
88
|
+
transition: border-color, 0.3s;
|
89
|
+
}
|
90
|
+
@media screen and (min-width: 1280px) {
|
91
|
+
.mfui-v6-promo-card__logo {
|
92
|
+
right: 52px;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
.mfui-v6-promo-card__logo:before,
|
96
|
+
.mfui-v6-promo-card__logo:after {
|
97
|
+
content: '';
|
98
|
+
position: absolute;
|
99
|
+
top: 50%;
|
100
|
+
width: 10px;
|
101
|
+
height: 10px;
|
102
|
+
translate: 0 -100%;
|
103
|
+
}
|
104
|
+
.mfui-v6-promo-card__logo:before {
|
105
|
+
background-image: radial-gradient(circle at 0 0, rgba(0, 0, 0, 0) 9px, var(--base) 10px);
|
106
|
+
left: -12px;
|
107
|
+
}
|
108
|
+
.mfui-v6-promo-card__logo:after {
|
109
|
+
background-image: radial-gradient(circle at 100% 0, rgba(0, 0, 0, 0) 9px, var(--base) 10px);
|
110
|
+
right: -12px;
|
111
|
+
}
|
112
|
+
.mfui-v6-promo-card_background_gray .mfui-v6-promo-card__logo {
|
113
|
+
border-color: var(--spbSky0);
|
114
|
+
background-color: var(--spbSky0);
|
115
|
+
}
|
116
|
+
.mfui-v6-promo-card_background_gray .mfui-v6-promo-card__logo:before {
|
117
|
+
background-image: radial-gradient(circle at 0 0, rgba(0, 0, 0, 0) 9px, var(--spbSky0) 10px);
|
118
|
+
}
|
119
|
+
.mfui-v6-promo-card_background_gray .mfui-v6-promo-card__logo:after {
|
120
|
+
background-image: radial-gradient(circle at 100% 0, rgba(0, 0, 0, 0) 9px, var(--spbSky0) 10px);
|
121
|
+
}
|
122
|
+
.mfui-v6-promo-card_background_gray:hover .mfui-v6-promo-card__logo {
|
123
|
+
border-color: var(--spbSky1);
|
124
|
+
background-color: var(--spbSky1);
|
125
|
+
}
|
126
|
+
.mfui-v6-promo-card_background_gray:hover .mfui-v6-promo-card__logo:before {
|
127
|
+
background-image: radial-gradient(circle at 0 0, rgba(0, 0, 0, 0) 9px, var(--spbSky1) 10px);
|
128
|
+
}
|
129
|
+
.mfui-v6-promo-card_background_gray:hover .mfui-v6-promo-card__logo:after {
|
130
|
+
background-image: radial-gradient(circle at 100% 0, rgba(0, 0, 0, 0) 9px, var(--spbSky1) 10px);
|
131
|
+
}
|
132
|
+
.mfui-v6-promo-card__logo-img {
|
133
|
+
width: 56px;
|
134
|
+
height: 56px;
|
135
|
+
border: 1px solid var(--spbSky1);
|
136
|
+
border-radius: inherit;
|
137
|
+
vertical-align: top;
|
138
|
+
}
|
139
|
+
@media screen and (min-width: 768px) {
|
140
|
+
.mfui-v6-promo-card__logo-img {
|
141
|
+
width: 64px;
|
142
|
+
height: 64px;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
@media screen and (min-width: 1280px) {
|
146
|
+
.mfui-v6-promo-card__logo-img {
|
147
|
+
width: 72px;
|
148
|
+
height: 72px;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
.mfui-v6-promo-card__subtitle {
|
152
|
+
margin-top: 8px;
|
153
|
+
}
|
154
|
+
.mfui-v6-promo-card__footer {
|
155
|
+
margin-top: auto;
|
156
|
+
padding-top: 16px;
|
157
|
+
}
|