@megafon/ui-core 5.14.1 → 5.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/es/colors/colorsData.js +3 -0
- package/dist/es/components/Accordion/Accordion.d.ts +4 -0
- package/dist/es/components/Accordion/Accordion.js +9 -3
- package/dist/es/components/Avatar/Avatar.css +52 -0
- package/dist/es/components/Avatar/Avatar.d.ts +22 -0
- package/dist/es/components/Avatar/Avatar.js +68 -0
- package/dist/es/components/Avatar/doc/i/img.png +0 -0
- package/dist/es/components/Avatar/i/placeholder.svg +1 -0
- package/dist/es/components/Carousel/Carousel.js +1 -0
- package/dist/es/components/ContentView/ContentView.d.ts +4 -0
- package/dist/es/components/ContentView/ContentView.js +4 -0
- package/dist/es/components/RadioButton/RadioButton.css +13 -7
- package/dist/es/index.d.ts +1 -0
- package/dist/es/index.js +1 -0
- package/dist/lib/colors/colorsData.js +3 -0
- package/dist/lib/components/Accordion/Accordion.d.ts +4 -0
- package/dist/lib/components/Accordion/Accordion.js +9 -3
- package/dist/lib/components/Avatar/Avatar.css +52 -0
- package/dist/lib/components/Avatar/Avatar.d.ts +22 -0
- package/dist/lib/components/Avatar/Avatar.js +87 -0
- package/dist/lib/components/Avatar/doc/i/img.png +0 -0
- package/dist/lib/components/Avatar/i/placeholder.svg +1 -0
- package/dist/lib/components/Carousel/Carousel.js +1 -0
- package/dist/lib/components/ContentView/ContentView.d.ts +4 -0
- package/dist/lib/components/ContentView/ContentView.js +4 -0
- package/dist/lib/components/RadioButton/RadioButton.css +13 -7
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +8 -0
- package/package.json +4 -4
- package/styles/colors.css +1 -0
- package/styles/colorsDark.css +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,36 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.16.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.15.0...@megafon/ui-core@5.16.0) (2024-06-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **carousel:** unsibscribe throttle ([c595b66](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/c595b66d2ecff5b071ffd69c7ffb22dd18b8e9ca))
|
|
12
|
+
* **contentview:** add new props to component ContentView ([8780d37](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/8780d37b9699b336dd5575403f9e8e6aee95113e))
|
|
13
|
+
* **radiobutton:** fix hover on touch devices ([fecbc40](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/fecbc4023a545835e4a3995feec1caac1c3e0253))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **accordion:** add new prop titleTag for change title tag, add classes.title prop" ([6f265f5](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/6f265f53bbd552957454405d8c95cbe1549c72dd))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# [5.15.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.14.1...@megafon/ui-core@5.15.0) (2024-06-17)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* **avatar:** create component Avatar ([d36574f](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/d36574f889a9eceb3a71b790670c2809a9c538aa))
|
|
30
|
+
* **colors:** add gradient Scrim ([ee4f5c6](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/ee4f5c6ddeea024573f5064308b3d8d30d31d575))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
6
36
|
## [5.14.1](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.14.0...@megafon/ui-core@5.14.1) (2024-06-10)
|
|
7
37
|
|
|
8
38
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { IHeaderProps } from '../Header/Header';
|
|
2
3
|
import './Accordion.less';
|
|
3
4
|
export interface IAccordionProps {
|
|
4
5
|
/** Ссылка на корневой элемент */
|
|
5
6
|
rootRef?: React.Ref<HTMLDivElement>;
|
|
6
7
|
/** Заголовок */
|
|
7
8
|
title: string | React.ReactNode | React.ReactNode[];
|
|
9
|
+
/** Заголовок */
|
|
10
|
+
titleTag?: IHeaderProps['as'];
|
|
8
11
|
/** Состояние открытости */
|
|
9
12
|
isOpened?: boolean;
|
|
10
13
|
/** Включить микроразметку */
|
|
@@ -17,6 +20,7 @@ export interface IAccordionProps {
|
|
|
17
20
|
openedClass?: string;
|
|
18
21
|
collapse?: string;
|
|
19
22
|
titleWrap?: string;
|
|
23
|
+
title?: string;
|
|
20
24
|
};
|
|
21
25
|
/** Дополнительные data атрибуты к внутренним элементам */
|
|
22
26
|
dataAttrs?: {
|
|
@@ -22,6 +22,8 @@ var cn = cnCreate('mfui-accordion');
|
|
|
22
22
|
var Accordion = function Accordion(_ref) {
|
|
23
23
|
var rootRef = _ref.rootRef,
|
|
24
24
|
title = _ref.title,
|
|
25
|
+
_ref$titleTag = _ref.titleTag,
|
|
26
|
+
titleTag = _ref$titleTag === void 0 ? 'h5' : _ref$titleTag,
|
|
25
27
|
_ref$isOpened = _ref.isOpened,
|
|
26
28
|
isOpened = _ref$isOpened === void 0 ? false : _ref$isOpened,
|
|
27
29
|
_ref$hasMicrodata = _ref.hasMicrodata,
|
|
@@ -33,6 +35,7 @@ var Accordion = function Accordion(_ref) {
|
|
|
33
35
|
rootPropsClasses = _ref$classes.root,
|
|
34
36
|
collapsePropsClasses = _ref$classes.collapse,
|
|
35
37
|
titleWrapPropsClasses = _ref$classes.titleWrap,
|
|
38
|
+
titlePropsClasses = _ref$classes.title,
|
|
36
39
|
dataAttrs = _ref.dataAttrs,
|
|
37
40
|
onClickAccordion = _ref.onClickAccordion,
|
|
38
41
|
children = _ref.children;
|
|
@@ -88,8 +91,9 @@ var Accordion = function Accordion(_ref) {
|
|
|
88
91
|
}, hasMicrodata && {
|
|
89
92
|
itemProp: 'name'
|
|
90
93
|
}), /*#__PURE__*/React.createElement(Header, {
|
|
91
|
-
as:
|
|
92
|
-
dataAttrs: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header
|
|
94
|
+
as: titleTag,
|
|
95
|
+
dataAttrs: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header,
|
|
96
|
+
className: titlePropsClasses
|
|
93
97
|
}, title), /*#__PURE__*/React.createElement("div", {
|
|
94
98
|
className: cn('icon-box')
|
|
95
99
|
}, /*#__PURE__*/React.createElement(ArrowDown, _extends({
|
|
@@ -107,6 +111,7 @@ Accordion.propTypes = {
|
|
|
107
111
|
current: PropTypes.elementType
|
|
108
112
|
}), PropTypes.any])]),
|
|
109
113
|
title: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,
|
|
114
|
+
titleTag: PropTypes.oneOf(['h1', 'h2', 'h3', 'h5']),
|
|
110
115
|
isOpened: PropTypes.bool,
|
|
111
116
|
hasMicrodata: PropTypes.bool,
|
|
112
117
|
className: PropTypes.string,
|
|
@@ -114,7 +119,8 @@ Accordion.propTypes = {
|
|
|
114
119
|
openedClass: PropTypes.string,
|
|
115
120
|
root: PropTypes.string,
|
|
116
121
|
collapse: PropTypes.string,
|
|
117
|
-
titleWrap: PropTypes.string
|
|
122
|
+
titleWrap: PropTypes.string,
|
|
123
|
+
title: PropTypes.string
|
|
118
124
|
}),
|
|
119
125
|
dataAttrs: PropTypes.shape({
|
|
120
126
|
root: PropTypes.objectOf(PropTypes.string.isRequired),
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
.mfui-avatar {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: -webkit-inline-box;
|
|
4
|
+
display: -ms-inline-flexbox;
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
-webkit-box-align: center;
|
|
7
|
+
-ms-flex-align: center;
|
|
8
|
+
align-items: center;
|
|
9
|
+
-webkit-box-pack: center;
|
|
10
|
+
-ms-flex-pack: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
-webkit-box-sizing: border-box;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
width: 40px;
|
|
15
|
+
height: 40px;
|
|
16
|
+
border-radius: 50%;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
font-weight: 500;
|
|
19
|
+
font-size: 15px;
|
|
20
|
+
}
|
|
21
|
+
.mfui-avatar__text {
|
|
22
|
+
display: block;
|
|
23
|
+
}
|
|
24
|
+
.mfui-avatar__image {
|
|
25
|
+
width: 100%;
|
|
26
|
+
height: 100%;
|
|
27
|
+
-o-object-fit: cover;
|
|
28
|
+
object-fit: cover;
|
|
29
|
+
background-color: var(--base);
|
|
30
|
+
}
|
|
31
|
+
.mfui-avatar__placeholder {
|
|
32
|
+
opacity: 0.3;
|
|
33
|
+
}
|
|
34
|
+
.mfui-avatar_color_green {
|
|
35
|
+
color: var(--brandGreen);
|
|
36
|
+
background-color: var(--brandGreen20);
|
|
37
|
+
}
|
|
38
|
+
.mfui-avatar_color_green .mfui-avatar__placeholder {
|
|
39
|
+
fill: var(--brandGreen);
|
|
40
|
+
}
|
|
41
|
+
.mfui-avatar_color_gray {
|
|
42
|
+
color: var(--spbSky3);
|
|
43
|
+
background-color: var(--spbSky0);
|
|
44
|
+
}
|
|
45
|
+
.mfui-avatar_color_gray .mfui-avatar__placeholder {
|
|
46
|
+
fill: var(--spbSky3);
|
|
47
|
+
}
|
|
48
|
+
.mfui-avatar_size_auto {
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: 100%;
|
|
51
|
+
font-size: inherit;
|
|
52
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './Avatar.less';
|
|
3
|
+
export interface IAvatarProps {
|
|
4
|
+
/** Ссылка на изображение. Имеет приоритет над текстом */
|
|
5
|
+
src?: string;
|
|
6
|
+
/** Значение тега alt для изображения */
|
|
7
|
+
alt?: string;
|
|
8
|
+
/** Текстовое отображение */
|
|
9
|
+
letters?: string;
|
|
10
|
+
/** Цвет заливки */
|
|
11
|
+
color?: 'green' | 'gray';
|
|
12
|
+
/** Размер (по умолчанию 40х40 пикселей). */
|
|
13
|
+
size?: 'default' | 'auto';
|
|
14
|
+
/** Дополнительный класс корневого элемента */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
|
17
|
+
dataAttrs?: {
|
|
18
|
+
root?: Record<string, string>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
declare const Avatar: React.FC<IAvatarProps>;
|
|
22
|
+
export default Avatar;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import "core-js/modules/es.array.slice.js";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
|
|
5
|
+
import * as PropTypes from 'prop-types';
|
|
6
|
+
import "./Avatar.css";
|
|
7
|
+
|
|
8
|
+
var PlaceholderIcon = function PlaceholderIcon(props) {
|
|
9
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
10
|
+
viewBox: "0 0 40 40"
|
|
11
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
12
|
+
d: "M29.188 40.75l2.625-9.752-.42-.407A16.63 16.63 0 0020 26.312a16.642 16.642 0 00-11.393 4.292l-.42.394 2.626 9.752h18.374zM12.125 15.813a7.875 7.875 0 1015.75 0 7.875 7.875 0 00-15.75 0z"
|
|
13
|
+
}));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var cn = cnCreate('mfui-avatar');
|
|
17
|
+
|
|
18
|
+
var Avatar = function Avatar(_ref) {
|
|
19
|
+
var src = _ref.src,
|
|
20
|
+
_ref$alt = _ref.alt,
|
|
21
|
+
alt = _ref$alt === void 0 ? 'avatar' : _ref$alt,
|
|
22
|
+
letters = _ref.letters,
|
|
23
|
+
_ref$color = _ref.color,
|
|
24
|
+
color = _ref$color === void 0 ? 'green' : _ref$color,
|
|
25
|
+
_ref$size = _ref.size,
|
|
26
|
+
size = _ref$size === void 0 ? 'default' : _ref$size,
|
|
27
|
+
className = _ref.className,
|
|
28
|
+
dataAttrs = _ref.dataAttrs;
|
|
29
|
+
|
|
30
|
+
var renderContent = function renderContent() {
|
|
31
|
+
if (src) {
|
|
32
|
+
return /*#__PURE__*/React.createElement("img", {
|
|
33
|
+
className: cn('image'),
|
|
34
|
+
src: src,
|
|
35
|
+
alt: alt
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (letters) {
|
|
40
|
+
var text = letters.slice(0, 2).toUpperCase();
|
|
41
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
42
|
+
className: cn('text')
|
|
43
|
+
}, text);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return /*#__PURE__*/React.createElement(PlaceholderIcon, {
|
|
47
|
+
className: cn('placeholder')
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
52
|
+
className: cn({
|
|
53
|
+
color: color,
|
|
54
|
+
size: size
|
|
55
|
+
}, [className])
|
|
56
|
+
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), renderContent());
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
Avatar.propTypes = {
|
|
60
|
+
src: PropTypes.string,
|
|
61
|
+
alt: PropTypes.string,
|
|
62
|
+
letters: PropTypes.string,
|
|
63
|
+
color: PropTypes.oneOf(['green', 'gray']),
|
|
64
|
+
size: PropTypes.oneOf(['default', 'auto']),
|
|
65
|
+
className: PropTypes.string,
|
|
66
|
+
dataAttrs: PropTypes.objectOf(PropTypes.object)
|
|
67
|
+
};
|
|
68
|
+
export default Avatar;
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M29.188 40.75l2.625-9.752-.42-.407A16.63 16.63 0 0020 26.312a16.642 16.642 0 00-11.393 4.292l-.42.394 2.626 9.752h18.374zM12.125 15.813a7.875 7.875 0 1015.75 0 7.875 7.875 0 00-15.75 0z"/></svg>
|
|
@@ -261,6 +261,7 @@ var Carousel = function Carousel(_ref) {
|
|
|
261
261
|
var windowResizeHandlerThrottled = throttle(windowResizeHandler, throttleTime.resize);
|
|
262
262
|
window.addEventListener('resize', windowResizeHandlerThrottled);
|
|
263
263
|
return function () {
|
|
264
|
+
windowResizeHandlerThrottled.cancel();
|
|
264
265
|
window.removeEventListener('resize', windowResizeHandlerThrottled);
|
|
265
266
|
};
|
|
266
267
|
}, [slidesSettings, swiperInstance]);
|
|
@@ -7,6 +7,10 @@ declare type ElementType = {
|
|
|
7
7
|
href?: string;
|
|
8
8
|
/** Атрибут target */
|
|
9
9
|
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
10
|
+
/** Отключение кнопки */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Показать загрузку */
|
|
13
|
+
showLoader?: boolean;
|
|
10
14
|
/** Обработчик клика */
|
|
11
15
|
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
|
12
16
|
};
|
|
@@ -46,6 +46,8 @@ var ContentView = function ContentView(_ref) {
|
|
|
46
46
|
className: cn('button', [classes.button]),
|
|
47
47
|
href: buttonParams.href,
|
|
48
48
|
target: buttonParams.target,
|
|
49
|
+
disabled: buttonParams.disabled,
|
|
50
|
+
showLoader: buttonParams.showLoader,
|
|
49
51
|
onClick: buttonParams.onClick,
|
|
50
52
|
dataAttrs: {
|
|
51
53
|
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
|
|
@@ -55,6 +57,8 @@ var ContentView = function ContentView(_ref) {
|
|
|
55
57
|
type: "text",
|
|
56
58
|
href: linkParams.href,
|
|
57
59
|
target: linkParams.target,
|
|
60
|
+
disabled: linkParams.disabled,
|
|
61
|
+
showLoader: linkParams.showLoader,
|
|
58
62
|
onClick: linkParams.onClick,
|
|
59
63
|
dataAttrs: {
|
|
60
64
|
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link
|
|
@@ -54,8 +54,10 @@
|
|
|
54
54
|
.mfui-radio-button__input_dark:checked + .mfui-radio-button__custom-input:before {
|
|
55
55
|
border: 7px solid var(--brandGreen);
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
@media (hover: hover) {
|
|
58
|
+
.mfui-radio-button__label_dark:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__custom-input:before {
|
|
59
|
+
border-color: var(--buttonHoverGreen);
|
|
60
|
+
}
|
|
59
61
|
}
|
|
60
62
|
.mfui-radio-button__label_dark:not(.mfui-radio-button__label_disabled):active .mfui-radio-button__custom-input:before {
|
|
61
63
|
border-color: var(--buttonDown);
|
|
@@ -80,12 +82,16 @@
|
|
|
80
82
|
border: 7px solid var(--stcWhite);
|
|
81
83
|
background-color: var(--stcBlack);
|
|
82
84
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
@media (hover: hover) {
|
|
86
|
+
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__custom-input:before {
|
|
87
|
+
border-color: var(--buttonHoverGrey);
|
|
88
|
+
background-color: var(--buttonHoverGrey);
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
@media (hover: hover) {
|
|
92
|
+
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__input:checked + .mfui-radio-button__custom-input:before {
|
|
93
|
+
background-color: var(--stcBlack);
|
|
94
|
+
}
|
|
89
95
|
}
|
|
90
96
|
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):active .mfui-radio-button__custom-input:before {
|
|
91
97
|
border-color: var(--buttonDown);
|
package/dist/es/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as Accordion } from './components/Accordion/Accordion';
|
|
2
|
+
export { default as Avatar } from './components/Avatar/Avatar';
|
|
2
3
|
export { default as Banner } from './components/Banner/Banner';
|
|
3
4
|
export { default as BannerDot } from './components/Banner/BannerDot';
|
|
4
5
|
export { default as Button } from './components/Button/Button';
|
package/dist/es/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as Accordion } from "./components/Accordion/Accordion";
|
|
2
|
+
export { default as Avatar } from "./components/Avatar/Avatar";
|
|
2
3
|
export { default as Banner } from "./components/Banner/Banner";
|
|
3
4
|
export { default as BannerDot } from "./components/Banner/BannerDot";
|
|
4
5
|
export { default as Button } from "./components/Button/Button";
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { IHeaderProps } from '../Header/Header';
|
|
2
3
|
import './Accordion.less';
|
|
3
4
|
export interface IAccordionProps {
|
|
4
5
|
/** Ссылка на корневой элемент */
|
|
5
6
|
rootRef?: React.Ref<HTMLDivElement>;
|
|
6
7
|
/** Заголовок */
|
|
7
8
|
title: string | React.ReactNode | React.ReactNode[];
|
|
9
|
+
/** Заголовок */
|
|
10
|
+
titleTag?: IHeaderProps['as'];
|
|
8
11
|
/** Состояние открытости */
|
|
9
12
|
isOpened?: boolean;
|
|
10
13
|
/** Включить микроразметку */
|
|
@@ -17,6 +20,7 @@ export interface IAccordionProps {
|
|
|
17
20
|
openedClass?: string;
|
|
18
21
|
collapse?: string;
|
|
19
22
|
titleWrap?: string;
|
|
23
|
+
title?: string;
|
|
20
24
|
};
|
|
21
25
|
/** Дополнительные data атрибуты к внутренним элементам */
|
|
22
26
|
dataAttrs?: {
|
|
@@ -42,6 +42,8 @@ var cn = (0, _uiHelpers.cnCreate)('mfui-accordion');
|
|
|
42
42
|
var Accordion = function Accordion(_ref) {
|
|
43
43
|
var rootRef = _ref.rootRef,
|
|
44
44
|
title = _ref.title,
|
|
45
|
+
_ref$titleTag = _ref.titleTag,
|
|
46
|
+
titleTag = _ref$titleTag === void 0 ? 'h5' : _ref$titleTag,
|
|
45
47
|
_ref$isOpened = _ref.isOpened,
|
|
46
48
|
isOpened = _ref$isOpened === void 0 ? false : _ref$isOpened,
|
|
47
49
|
_ref$hasMicrodata = _ref.hasMicrodata,
|
|
@@ -53,6 +55,7 @@ var Accordion = function Accordion(_ref) {
|
|
|
53
55
|
rootPropsClasses = _ref$classes.root,
|
|
54
56
|
collapsePropsClasses = _ref$classes.collapse,
|
|
55
57
|
titleWrapPropsClasses = _ref$classes.titleWrap,
|
|
58
|
+
titlePropsClasses = _ref$classes.title,
|
|
56
59
|
dataAttrs = _ref.dataAttrs,
|
|
57
60
|
onClickAccordion = _ref.onClickAccordion,
|
|
58
61
|
children = _ref.children;
|
|
@@ -108,8 +111,9 @@ var Accordion = function Accordion(_ref) {
|
|
|
108
111
|
}, hasMicrodata && {
|
|
109
112
|
itemProp: 'name'
|
|
110
113
|
}), /*#__PURE__*/React.createElement(_Header["default"], {
|
|
111
|
-
as:
|
|
112
|
-
dataAttrs: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header
|
|
114
|
+
as: titleTag,
|
|
115
|
+
dataAttrs: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header,
|
|
116
|
+
className: titlePropsClasses
|
|
113
117
|
}, title), /*#__PURE__*/React.createElement("div", {
|
|
114
118
|
className: cn('icon-box')
|
|
115
119
|
}, /*#__PURE__*/React.createElement(ArrowDown, (0, _extends2["default"])({
|
|
@@ -127,6 +131,7 @@ Accordion.propTypes = {
|
|
|
127
131
|
current: PropTypes.elementType
|
|
128
132
|
}), PropTypes.any])]),
|
|
129
133
|
title: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,
|
|
134
|
+
titleTag: PropTypes.oneOf(['h1', 'h2', 'h3', 'h5']),
|
|
130
135
|
isOpened: PropTypes.bool,
|
|
131
136
|
hasMicrodata: PropTypes.bool,
|
|
132
137
|
className: PropTypes.string,
|
|
@@ -134,7 +139,8 @@ Accordion.propTypes = {
|
|
|
134
139
|
openedClass: PropTypes.string,
|
|
135
140
|
root: PropTypes.string,
|
|
136
141
|
collapse: PropTypes.string,
|
|
137
|
-
titleWrap: PropTypes.string
|
|
142
|
+
titleWrap: PropTypes.string,
|
|
143
|
+
title: PropTypes.string
|
|
138
144
|
}),
|
|
139
145
|
dataAttrs: PropTypes.shape({
|
|
140
146
|
root: PropTypes.objectOf(PropTypes.string.isRequired),
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
.mfui-avatar {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: -webkit-inline-box;
|
|
4
|
+
display: -ms-inline-flexbox;
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
-webkit-box-align: center;
|
|
7
|
+
-ms-flex-align: center;
|
|
8
|
+
align-items: center;
|
|
9
|
+
-webkit-box-pack: center;
|
|
10
|
+
-ms-flex-pack: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
-webkit-box-sizing: border-box;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
width: 40px;
|
|
15
|
+
height: 40px;
|
|
16
|
+
border-radius: 50%;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
font-weight: 500;
|
|
19
|
+
font-size: 15px;
|
|
20
|
+
}
|
|
21
|
+
.mfui-avatar__text {
|
|
22
|
+
display: block;
|
|
23
|
+
}
|
|
24
|
+
.mfui-avatar__image {
|
|
25
|
+
width: 100%;
|
|
26
|
+
height: 100%;
|
|
27
|
+
-o-object-fit: cover;
|
|
28
|
+
object-fit: cover;
|
|
29
|
+
background-color: var(--base);
|
|
30
|
+
}
|
|
31
|
+
.mfui-avatar__placeholder {
|
|
32
|
+
opacity: 0.3;
|
|
33
|
+
}
|
|
34
|
+
.mfui-avatar_color_green {
|
|
35
|
+
color: var(--brandGreen);
|
|
36
|
+
background-color: var(--brandGreen20);
|
|
37
|
+
}
|
|
38
|
+
.mfui-avatar_color_green .mfui-avatar__placeholder {
|
|
39
|
+
fill: var(--brandGreen);
|
|
40
|
+
}
|
|
41
|
+
.mfui-avatar_color_gray {
|
|
42
|
+
color: var(--spbSky3);
|
|
43
|
+
background-color: var(--spbSky0);
|
|
44
|
+
}
|
|
45
|
+
.mfui-avatar_color_gray .mfui-avatar__placeholder {
|
|
46
|
+
fill: var(--spbSky3);
|
|
47
|
+
}
|
|
48
|
+
.mfui-avatar_size_auto {
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: 100%;
|
|
51
|
+
font-size: inherit;
|
|
52
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './Avatar.less';
|
|
3
|
+
export interface IAvatarProps {
|
|
4
|
+
/** Ссылка на изображение. Имеет приоритет над текстом */
|
|
5
|
+
src?: string;
|
|
6
|
+
/** Значение тега alt для изображения */
|
|
7
|
+
alt?: string;
|
|
8
|
+
/** Текстовое отображение */
|
|
9
|
+
letters?: string;
|
|
10
|
+
/** Цвет заливки */
|
|
11
|
+
color?: 'green' | 'gray';
|
|
12
|
+
/** Размер (по умолчанию 40х40 пикселей). */
|
|
13
|
+
size?: 'default' | 'auto';
|
|
14
|
+
/** Дополнительный класс корневого элемента */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
|
17
|
+
dataAttrs?: {
|
|
18
|
+
root?: Record<string, string>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
declare const Avatar: React.FC<IAvatarProps>;
|
|
22
|
+
export default Avatar;
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
require("core-js/modules/es.array.slice.js");
|
|
13
|
+
|
|
14
|
+
var React = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _uiHelpers = require("@megafon/ui-helpers");
|
|
17
|
+
|
|
18
|
+
var PropTypes = _interopRequireWildcard(require("prop-types"));
|
|
19
|
+
|
|
20
|
+
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); }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
25
|
+
|
|
26
|
+
var PlaceholderIcon = function PlaceholderIcon(props) {
|
|
27
|
+
return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
|
|
28
|
+
viewBox: "0 0 40 40"
|
|
29
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
30
|
+
d: "M29.188 40.75l2.625-9.752-.42-.407A16.63 16.63 0 0020 26.312a16.642 16.642 0 00-11.393 4.292l-.42.394 2.626 9.752h18.374zM12.125 15.813a7.875 7.875 0 1015.75 0 7.875 7.875 0 00-15.75 0z"
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
var cn = (0, _uiHelpers.cnCreate)('mfui-avatar');
|
|
35
|
+
|
|
36
|
+
var Avatar = function Avatar(_ref) {
|
|
37
|
+
var src = _ref.src,
|
|
38
|
+
_ref$alt = _ref.alt,
|
|
39
|
+
alt = _ref$alt === void 0 ? 'avatar' : _ref$alt,
|
|
40
|
+
letters = _ref.letters,
|
|
41
|
+
_ref$color = _ref.color,
|
|
42
|
+
color = _ref$color === void 0 ? 'green' : _ref$color,
|
|
43
|
+
_ref$size = _ref.size,
|
|
44
|
+
size = _ref$size === void 0 ? 'default' : _ref$size,
|
|
45
|
+
className = _ref.className,
|
|
46
|
+
dataAttrs = _ref.dataAttrs;
|
|
47
|
+
|
|
48
|
+
var renderContent = function renderContent() {
|
|
49
|
+
if (src) {
|
|
50
|
+
return /*#__PURE__*/React.createElement("img", {
|
|
51
|
+
className: cn('image'),
|
|
52
|
+
src: src,
|
|
53
|
+
alt: alt
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (letters) {
|
|
58
|
+
var text = letters.slice(0, 2).toUpperCase();
|
|
59
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
60
|
+
className: cn('text')
|
|
61
|
+
}, text);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return /*#__PURE__*/React.createElement(PlaceholderIcon, {
|
|
65
|
+
className: cn('placeholder')
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
|
|
70
|
+
className: cn({
|
|
71
|
+
color: color,
|
|
72
|
+
size: size
|
|
73
|
+
}, [className])
|
|
74
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), renderContent());
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
Avatar.propTypes = {
|
|
78
|
+
src: PropTypes.string,
|
|
79
|
+
alt: PropTypes.string,
|
|
80
|
+
letters: PropTypes.string,
|
|
81
|
+
color: PropTypes.oneOf(['green', 'gray']),
|
|
82
|
+
size: PropTypes.oneOf(['default', 'auto']),
|
|
83
|
+
className: PropTypes.string,
|
|
84
|
+
dataAttrs: PropTypes.objectOf(PropTypes.object)
|
|
85
|
+
};
|
|
86
|
+
var _default = Avatar;
|
|
87
|
+
exports["default"] = _default;
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M29.188 40.75l2.625-9.752-.42-.407A16.63 16.63 0 0020 26.312a16.642 16.642 0 00-11.393 4.292l-.42.394 2.626 9.752h18.374zM12.125 15.813a7.875 7.875 0 1015.75 0 7.875 7.875 0 00-15.75 0z"/></svg>
|
|
@@ -302,6 +302,7 @@ var Carousel = function Carousel(_ref) {
|
|
|
302
302
|
var windowResizeHandlerThrottled = (0, _lodash["default"])(windowResizeHandler, _throttleTime["default"].resize);
|
|
303
303
|
window.addEventListener('resize', windowResizeHandlerThrottled);
|
|
304
304
|
return function () {
|
|
305
|
+
windowResizeHandlerThrottled.cancel();
|
|
305
306
|
window.removeEventListener('resize', windowResizeHandlerThrottled);
|
|
306
307
|
};
|
|
307
308
|
}, [slidesSettings, swiperInstance]);
|
|
@@ -7,6 +7,10 @@ declare type ElementType = {
|
|
|
7
7
|
href?: string;
|
|
8
8
|
/** Атрибут target */
|
|
9
9
|
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
10
|
+
/** Отключение кнопки */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Показать загрузку */
|
|
13
|
+
showLoader?: boolean;
|
|
10
14
|
/** Обработчик клика */
|
|
11
15
|
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
|
12
16
|
};
|
|
@@ -66,6 +66,8 @@ var ContentView = function ContentView(_ref) {
|
|
|
66
66
|
className: cn('button', [classes.button]),
|
|
67
67
|
href: buttonParams.href,
|
|
68
68
|
target: buttonParams.target,
|
|
69
|
+
disabled: buttonParams.disabled,
|
|
70
|
+
showLoader: buttonParams.showLoader,
|
|
69
71
|
onClick: buttonParams.onClick,
|
|
70
72
|
dataAttrs: {
|
|
71
73
|
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
|
|
@@ -75,6 +77,8 @@ var ContentView = function ContentView(_ref) {
|
|
|
75
77
|
type: "text",
|
|
76
78
|
href: linkParams.href,
|
|
77
79
|
target: linkParams.target,
|
|
80
|
+
disabled: linkParams.disabled,
|
|
81
|
+
showLoader: linkParams.showLoader,
|
|
78
82
|
onClick: linkParams.onClick,
|
|
79
83
|
dataAttrs: {
|
|
80
84
|
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.link
|
|
@@ -54,8 +54,10 @@
|
|
|
54
54
|
.mfui-radio-button__input_dark:checked + .mfui-radio-button__custom-input:before {
|
|
55
55
|
border: 7px solid var(--brandGreen);
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
@media (hover: hover) {
|
|
58
|
+
.mfui-radio-button__label_dark:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__custom-input:before {
|
|
59
|
+
border-color: var(--buttonHoverGreen);
|
|
60
|
+
}
|
|
59
61
|
}
|
|
60
62
|
.mfui-radio-button__label_dark:not(.mfui-radio-button__label_disabled):active .mfui-radio-button__custom-input:before {
|
|
61
63
|
border-color: var(--buttonDown);
|
|
@@ -80,12 +82,16 @@
|
|
|
80
82
|
border: 7px solid var(--stcWhite);
|
|
81
83
|
background-color: var(--stcBlack);
|
|
82
84
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
@media (hover: hover) {
|
|
86
|
+
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__custom-input:before {
|
|
87
|
+
border-color: var(--buttonHoverGrey);
|
|
88
|
+
background-color: var(--buttonHoverGrey);
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
@media (hover: hover) {
|
|
92
|
+
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):hover .mfui-radio-button__input:checked + .mfui-radio-button__custom-input:before {
|
|
93
|
+
background-color: var(--stcBlack);
|
|
94
|
+
}
|
|
89
95
|
}
|
|
90
96
|
.mfui-radio-button__label_light:not(.mfui-radio-button__label_disabled):active .mfui-radio-button__custom-input:before {
|
|
91
97
|
border-color: var(--buttonDown);
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as Accordion } from './components/Accordion/Accordion';
|
|
2
|
+
export { default as Avatar } from './components/Avatar/Avatar';
|
|
2
3
|
export { default as Banner } from './components/Banner/Banner';
|
|
3
4
|
export { default as BannerDot } from './components/Banner/BannerDot';
|
|
4
5
|
export { default as Button } from './components/Button/Button';
|
package/dist/lib/index.js
CHANGED
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "Accordion", {
|
|
|
9
9
|
return _Accordion["default"];
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "Avatar", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _Avatar["default"];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "Banner", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function get() {
|
|
@@ -378,6 +384,8 @@ Object.defineProperty(exports, "usePagination", {
|
|
|
378
384
|
|
|
379
385
|
var _Accordion = _interopRequireDefault(require("./components/Accordion/Accordion"));
|
|
380
386
|
|
|
387
|
+
var _Avatar = _interopRequireDefault(require("./components/Avatar/Avatar"));
|
|
388
|
+
|
|
381
389
|
var _Banner = _interopRequireDefault(require("./components/Banner/Banner"));
|
|
382
390
|
|
|
383
391
|
var _BannerDot = _interopRequireDefault(require("./components/Banner/BannerDot"));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@megafon/ui-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.16.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"styles"
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@babel/preset-env": "^7.8.6",
|
|
51
51
|
"@babel/preset-react": "^7.8.3",
|
|
52
52
|
"@babel/preset-typescript": "^7.8.3",
|
|
53
|
-
"@megafon/ui-icons": "^2.
|
|
53
|
+
"@megafon/ui-icons": "^2.25.0",
|
|
54
54
|
"@svgr/core": "^2.4.1",
|
|
55
55
|
"@testing-library/jest-dom": "5.16.2",
|
|
56
56
|
"@testing-library/react": "12.1.2",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"dependencies": {
|
|
87
87
|
"@babel/runtime": "^7.8.4",
|
|
88
88
|
"@datepicker-react/hooks": "^2.7.0",
|
|
89
|
-
"@megafon/ui-helpers": "^2.
|
|
89
|
+
"@megafon/ui-helpers": "^2.6.0",
|
|
90
90
|
"@popperjs/core": "^2.5.3",
|
|
91
91
|
"core-js": "^3.6.4",
|
|
92
92
|
"date-fns": "^2.16.1",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"react-popper": "^2.2.3",
|
|
98
98
|
"swiper": "^6.5.6"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "0d4f96ecbc805db6a1b2200dd9adbb707349d474"
|
|
101
101
|
}
|
package/styles/colors.css
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
--gradientBasic: linear-gradient(90deg, #01873F 0%, #00B956 74%, #14CD6A 100%);
|
|
32
32
|
--gradientVIP: linear-gradient(90deg, #5B1168 0%, #731982 74%, #821E93 100%);
|
|
33
33
|
--gradientExclusive: linear-gradient(90deg, #2A2674 0%, #444189 74%, #504D93 100%);
|
|
34
|
+
--gradientScrim: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 22.73%);
|
|
34
35
|
|
|
35
36
|
/* Static */
|
|
36
37
|
--stcWhite: #FFFFFF;
|
package/styles/colorsDark.css
CHANGED
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
--gradientBasic: linear-gradient(90deg, #01873F 0%, #00B956 74%, #14CD6A 100%);
|
|
33
33
|
--gradientVIP: linear-gradient(90deg, #5B1168 0%, #731982 74%, #821E93 100%);
|
|
34
34
|
--gradientExclusive: linear-gradient(90deg, #2A2674 0%, #444189 74%, #504D93 100%);
|
|
35
|
+
--gradientScrim: linear-gradient(180deg, rgba(31, 31, 31, 0) 0%, #1F1F1F 22.73%);
|
|
35
36
|
|
|
36
37
|
/* Static */
|
|
37
38
|
--stcWhite: #FFFFFF;
|