@megafon/ui-core 3.8.0 → 3.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/CHANGELOG.md +39 -0
- package/dist/es/components/Banner/Banner.d.ts +2 -0
- package/dist/es/components/Banner/Banner.js +46 -20
- package/dist/es/components/Select/Select.js +1 -1
- package/dist/es/components/Switcher/Switcher.d.ts +1 -0
- package/dist/es/components/Switcher/Switcher.js +4 -3
- package/dist/es/components/Tooltip/Tooltip.d.ts +2 -0
- package/dist/es/components/Tooltip/Tooltip.js +8 -3
- package/dist/lib/components/Banner/Banner.d.ts +2 -0
- package/dist/lib/components/Banner/Banner.js +46 -20
- package/dist/lib/components/Select/Select.js +1 -1
- package/dist/lib/components/Switcher/Switcher.d.ts +1 -0
- package/dist/lib/components/Switcher/Switcher.js +4 -3
- package/dist/lib/components/Tooltip/Tooltip.d.ts +2 -0
- package/dist/lib/components/Tooltip/Tooltip.js +8 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,45 @@
|
|
|
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
|
+
## [3.10.1](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-core@3.10.0...@megafon/ui-core@3.10.1) (2022-06-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **banner:** fix bug with hover on autoplay ([93271d8](https://github.com/MegafonWebLab/megafon-ui/commit/93271d8c8f9dd900c031d41f89207f61c41db063))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [3.10.0](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-core@3.9.0...@megafon/ui-core@3.10.0) (2022-05-30)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **banner:** add new prop 'pauseOnHover' ([ac654c3](https://github.com/MegafonWebLab/megafon-ui/commit/ac654c3c23821a5d29ffd5cd91ff7337b3d087c1))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# [3.9.0](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-core@3.8.0...@megafon/ui-core@3.9.0) (2022-05-27)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* **select:** fix selected item color when value is zero ([9847095](https://github.com/MegafonWebLab/megafon-ui/commit/98470955ef813504d4bfa4cd4d3aba77b5458446))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
* **switcher:** add data-attribute for inner element ([793a022](https://github.com/MegafonWebLab/megafon-ui/commit/793a0224ab957b938e67dd1b4d16c2389a9fb6f8))
|
|
39
|
+
* **tooltip:** add portal selector props ([6188832](https://github.com/MegafonWebLab/megafon-ui/commit/6188832e9ba212e7a8182333aba06d77c3e979d6))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
6
45
|
# [3.8.0](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-core@3.7.0...@megafon/ui-core@3.8.0) (2022-05-17)
|
|
7
46
|
|
|
8
47
|
|
|
@@ -32,6 +32,8 @@ export interface IBannerProps {
|
|
|
32
32
|
autoPlay?: boolean;
|
|
33
33
|
/** Задержка автоматической прокрутки */
|
|
34
34
|
autoPlayDelay?: number;
|
|
35
|
+
/** Пауза автоматической прокрутки при наведении курсора на компонент */
|
|
36
|
+
pauseOnHover?: boolean;
|
|
35
37
|
/** Цветовая тема навигации */
|
|
36
38
|
navTheme?: NavThemeType;
|
|
37
39
|
/** Обработчик клика по стрелке "вперед" (должен быть обернут в useCallback) */
|
|
@@ -49,7 +49,9 @@ var Banner = function Banner(_ref) {
|
|
|
49
49
|
onPrevClick = _ref.onPrevClick,
|
|
50
50
|
onDotClick = _ref.onDotClick,
|
|
51
51
|
onChange = _ref.onChange,
|
|
52
|
-
dataAttrs = _ref.dataAttrs
|
|
52
|
+
dataAttrs = _ref.dataAttrs,
|
|
53
|
+
_ref$pauseOnHover = _ref.pauseOnHover,
|
|
54
|
+
pauseOnHover = _ref$pauseOnHover === void 0 ? false : _ref$pauseOnHover;
|
|
53
55
|
|
|
54
56
|
var _React$useState = React.useState(),
|
|
55
57
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -69,29 +71,42 @@ var Banner = function Banner(_ref) {
|
|
|
69
71
|
var _React$useState7 = React.useState(autoPlay),
|
|
70
72
|
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
71
73
|
isAutoPlaying = _React$useState8[0],
|
|
72
|
-
|
|
74
|
+
setAutoPlaying = _React$useState8[1];
|
|
73
75
|
|
|
74
76
|
var _React$useState9 = React.useState(0),
|
|
75
77
|
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
76
78
|
activeIndex = _React$useState10[0],
|
|
77
79
|
setActiveIndex = _React$useState10[1];
|
|
78
80
|
|
|
81
|
+
var _React$useState11 = React.useState(autoPlayDelay),
|
|
82
|
+
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
83
|
+
delay = _React$useState12[0],
|
|
84
|
+
setDelay = _React$useState12[1];
|
|
85
|
+
|
|
86
|
+
var _React$useState13 = React.useState(false),
|
|
87
|
+
_React$useState14 = _slicedToArray(_React$useState13, 2),
|
|
88
|
+
isIncreasedDelay = _React$useState14[0],
|
|
89
|
+
setIsIncreasedDelay = _React$useState14[1];
|
|
90
|
+
|
|
79
91
|
var showDotTimer = loop ? isAutoPlaying : isAutoPlaying && !isEnd;
|
|
80
|
-
var dotTimerDelay =
|
|
92
|
+
var dotTimerDelay = delay / 1000;
|
|
81
93
|
var navArrowTheme = navTheme === NavTheme.DARK ? ArrowTheme.DARK : ArrowTheme.PURPLE;
|
|
94
|
+
var rootRef = React.useRef(null);
|
|
82
95
|
var increaseAutoplayDelay = React.useCallback(function (_ref2) {
|
|
83
96
|
var params = _ref2.params,
|
|
84
97
|
autoplay = _ref2.autoplay;
|
|
85
98
|
|
|
86
|
-
if (_typeof(params.autoplay) !== 'object' || !
|
|
99
|
+
if (_typeof(params.autoplay) !== 'object' || !autoPlay) {
|
|
87
100
|
return;
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
autoplay.stop(); // eslint-disable-next-line no-param-reassign
|
|
91
104
|
|
|
92
105
|
params.autoplay.delay = autoPlayDelay * 3;
|
|
106
|
+
setDelay(autoPlayDelay * 3);
|
|
107
|
+
setIsIncreasedDelay(true);
|
|
93
108
|
autoplay.start();
|
|
94
|
-
}, [autoPlayDelay]);
|
|
109
|
+
}, [autoPlay, autoPlayDelay]);
|
|
95
110
|
var handlePrevClick = React.useCallback(function () {
|
|
96
111
|
if (!swiperInstance) {
|
|
97
112
|
return;
|
|
@@ -99,8 +114,8 @@ var Banner = function Banner(_ref) {
|
|
|
99
114
|
|
|
100
115
|
swiperInstance.slidePrev();
|
|
101
116
|
onPrevClick === null || onPrevClick === void 0 ? void 0 : onPrevClick(swiperInstance.realIndex);
|
|
102
|
-
increaseAutoplayDelay(swiperInstance);
|
|
103
|
-
}, [swiperInstance, onPrevClick, increaseAutoplayDelay]);
|
|
117
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
118
|
+
}, [swiperInstance, onPrevClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
104
119
|
var handleNextClick = React.useCallback(function () {
|
|
105
120
|
if (!swiperInstance) {
|
|
106
121
|
return;
|
|
@@ -108,8 +123,8 @@ var Banner = function Banner(_ref) {
|
|
|
108
123
|
|
|
109
124
|
swiperInstance.slideNext();
|
|
110
125
|
onNextClick === null || onNextClick === void 0 ? void 0 : onNextClick(swiperInstance.realIndex);
|
|
111
|
-
increaseAutoplayDelay(swiperInstance);
|
|
112
|
-
}, [swiperInstance, onNextClick, increaseAutoplayDelay]);
|
|
126
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
127
|
+
}, [swiperInstance, onNextClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
113
128
|
var handleDotClick = React.useCallback(function (index) {
|
|
114
129
|
if (!swiperInstance) {
|
|
115
130
|
return;
|
|
@@ -122,11 +137,8 @@ var Banner = function Banner(_ref) {
|
|
|
122
137
|
}
|
|
123
138
|
|
|
124
139
|
onDotClick === null || onDotClick === void 0 ? void 0 : onDotClick(swiperInstance.realIndex);
|
|
125
|
-
increaseAutoplayDelay(swiperInstance);
|
|
126
|
-
}, [swiperInstance, loop, onDotClick, increaseAutoplayDelay]);
|
|
127
|
-
var handleSwiper = React.useCallback(function (swiper) {
|
|
128
|
-
setSwiperInstance(swiper);
|
|
129
|
-
}, []);
|
|
140
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
141
|
+
}, [swiperInstance, loop, onDotClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
130
142
|
var handleReachBeginning = React.useCallback(function () {
|
|
131
143
|
setBeginning(true);
|
|
132
144
|
}, []);
|
|
@@ -148,24 +160,37 @@ var Banner = function Banner(_ref) {
|
|
|
148
160
|
setActiveIndex(realIndex);
|
|
149
161
|
onChange === null || onChange === void 0 ? void 0 : onChange(realIndex);
|
|
150
162
|
}, [onChange]);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
163
|
+
React.useEffect(function () {
|
|
164
|
+
var rootElement = rootRef.current;
|
|
165
|
+
|
|
166
|
+
if (!pauseOnHover || !autoPlay) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('mouseenter', function () {
|
|
171
|
+
swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay.stop();
|
|
172
|
+
setAutoPlaying(false);
|
|
173
|
+
});
|
|
174
|
+
rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('mouseleave', function () {
|
|
175
|
+
swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay.start();
|
|
176
|
+
setAutoPlaying(true);
|
|
177
|
+
});
|
|
178
|
+
}, [autoPlay, pauseOnHover, swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay]);
|
|
154
179
|
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
155
180
|
className: cn({
|
|
156
181
|
'nav-theme': navTheme
|
|
157
|
-
}, className)
|
|
182
|
+
}, className),
|
|
183
|
+
ref: rootRef
|
|
158
184
|
}), /*#__PURE__*/React.createElement(Swiper, _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.swiper), {
|
|
159
185
|
className: cn('swiper'),
|
|
160
186
|
loop: loop,
|
|
161
187
|
autoplay: autoPlay ? getAutoPlayConfig(autoPlayDelay) : false,
|
|
162
188
|
watchSlidesVisibility: true,
|
|
163
|
-
onSwiper:
|
|
189
|
+
onSwiper: setSwiperInstance,
|
|
164
190
|
onReachBeginning: handleReachBeginning,
|
|
165
191
|
onReachEnd: handleReachEnd,
|
|
166
192
|
onFromEdge: handleFromEdge,
|
|
167
193
|
onSlideChange: handleSlideChange,
|
|
168
|
-
onAutoplayStop: handleAutoplayStop,
|
|
169
194
|
onTouchEnd: increaseAutoplayDelay
|
|
170
195
|
}), React.Children.map(children, function (child, i) {
|
|
171
196
|
return /*#__PURE__*/React.createElement(SwiperSlide, _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.slide, i + 1), {
|
|
@@ -232,6 +257,7 @@ Banner.propTypes = {
|
|
|
232
257
|
}),
|
|
233
258
|
autoPlay: PropTypes.bool,
|
|
234
259
|
autoPlayDelay: PropTypes.number,
|
|
260
|
+
pauseOnHover: PropTypes.bool,
|
|
235
261
|
navTheme: PropTypes.oneOf(Object.values(NavTheme)),
|
|
236
262
|
onNextClick: PropTypes.func,
|
|
237
263
|
onPrevClick: PropTypes.func,
|
|
@@ -337,7 +337,7 @@ var Select = function Select(_ref) {
|
|
|
337
337
|
|
|
338
338
|
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title), {
|
|
339
339
|
className: cn('title', {
|
|
340
|
-
placeholder: !!placeholder &&
|
|
340
|
+
placeholder: !!placeholder && currentValue === undefined
|
|
341
341
|
}, [classes === null || classes === void 0 ? void 0 : classes.title]),
|
|
342
342
|
role: "button",
|
|
343
343
|
tabIndex: 0,
|
|
@@ -40,7 +40,7 @@ var Switcher = function Switcher(_ref) {
|
|
|
40
40
|
size: textSize,
|
|
41
41
|
left: true
|
|
42
42
|
})
|
|
43
|
-
}, children), /*#__PURE__*/React.createElement("div", {
|
|
43
|
+
}, children), /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
|
|
44
44
|
className: cn('input', {
|
|
45
45
|
checked: checked,
|
|
46
46
|
disabled: disabled,
|
|
@@ -50,7 +50,7 @@ var Switcher = function Switcher(_ref) {
|
|
|
50
50
|
onClick: handleChange,
|
|
51
51
|
onKeyDown: handleChange,
|
|
52
52
|
tabIndex: isInteractiveDisabled ? undefined : 0
|
|
53
|
-
}, showLoader && !disabled && /*#__PURE__*/React.createElement("div", {
|
|
53
|
+
}), showLoader && !disabled && /*#__PURE__*/React.createElement("div", {
|
|
54
54
|
className: cn('loader')
|
|
55
55
|
}), /*#__PURE__*/React.createElement("div", {
|
|
56
56
|
className: cn('pointer')
|
|
@@ -63,7 +63,8 @@ var Switcher = function Switcher(_ref) {
|
|
|
63
63
|
|
|
64
64
|
Switcher.propTypes = {
|
|
65
65
|
dataAttrs: PropTypes.shape({
|
|
66
|
-
root: PropTypes.objectOf(PropTypes.string.isRequired)
|
|
66
|
+
root: PropTypes.objectOf(PropTypes.string.isRequired),
|
|
67
|
+
input: PropTypes.objectOf(PropTypes.string.isRequired)
|
|
67
68
|
}),
|
|
68
69
|
className: PropTypes.string,
|
|
69
70
|
textSize: PropTypes.oneOf(['small', 'medium']),
|
|
@@ -39,6 +39,8 @@ export interface ITooltipProps {
|
|
|
39
39
|
isOpened?: boolean;
|
|
40
40
|
/** Отрендерить компонент в корневой элементе страницы body */
|
|
41
41
|
isPortal?: boolean;
|
|
42
|
+
/** Рендеринг компонента в указанном селекторе */
|
|
43
|
+
portalSelector?: string;
|
|
42
44
|
/** Дополнительный класс корневого элемента */
|
|
43
45
|
className?: string;
|
|
44
46
|
/** Дополнительные классы для внутренних элементов */
|
|
@@ -48,6 +48,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
48
48
|
isOpened = _ref$isOpened === void 0 ? false : _ref$isOpened,
|
|
49
49
|
_ref$isPortal = _ref.isPortal,
|
|
50
50
|
isPortal = _ref$isPortal === void 0 ? false : _ref$isPortal,
|
|
51
|
+
portalSelector = _ref.portalSelector,
|
|
51
52
|
children = _ref.children,
|
|
52
53
|
_ref$classes = _ref.classes;
|
|
53
54
|
_ref$classes = _ref$classes === void 0 ? {} : _ref$classes;
|
|
@@ -222,12 +223,14 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
222
223
|
useEffect(function () {
|
|
223
224
|
return function () {
|
|
224
225
|
if (portalElem.current) {
|
|
225
|
-
document.
|
|
226
|
+
var parent = portalSelector ? document.querySelector(portalSelector) : document.body;
|
|
227
|
+
parent === null || parent === void 0 ? void 0 : parent.removeChild(portalElem.current);
|
|
226
228
|
}
|
|
227
229
|
|
|
228
230
|
portalElem.current = null;
|
|
229
231
|
};
|
|
230
|
-
},
|
|
232
|
+
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
233
|
+
[]);
|
|
231
234
|
var template = /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
232
235
|
className: cn({
|
|
233
236
|
paddings: paddings,
|
|
@@ -255,7 +258,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
255
258
|
|
|
256
259
|
if (isPortal && !portalElem.current && typeof window !== 'undefined') {
|
|
257
260
|
portalElem.current = document.createElement('div');
|
|
258
|
-
document.
|
|
261
|
+
var parent = portalSelector ? document.querySelector(portalSelector) : document.body;
|
|
262
|
+
parent === null || parent === void 0 ? void 0 : parent.appendChild(portalElem.current);
|
|
259
263
|
}
|
|
260
264
|
|
|
261
265
|
if (isPortal && portalElem.current) {
|
|
@@ -294,6 +298,7 @@ Tooltip.propTypes = {
|
|
|
294
298
|
}), PropTypes.any])]),
|
|
295
299
|
isOpened: PropTypes.bool,
|
|
296
300
|
isPortal: PropTypes.bool,
|
|
301
|
+
portalSelector: PropTypes.string,
|
|
297
302
|
className: PropTypes.string,
|
|
298
303
|
classes: PropTypes.shape({
|
|
299
304
|
root: PropTypes.string,
|
|
@@ -32,6 +32,8 @@ export interface IBannerProps {
|
|
|
32
32
|
autoPlay?: boolean;
|
|
33
33
|
/** Задержка автоматической прокрутки */
|
|
34
34
|
autoPlayDelay?: number;
|
|
35
|
+
/** Пауза автоматической прокрутки при наведении курсора на компонент */
|
|
36
|
+
pauseOnHover?: boolean;
|
|
35
37
|
/** Цветовая тема навигации */
|
|
36
38
|
navTheme?: NavThemeType;
|
|
37
39
|
/** Обработчик клика по стрелке "вперед" (должен быть обернут в useCallback) */
|
|
@@ -77,7 +77,9 @@ var Banner = function Banner(_ref) {
|
|
|
77
77
|
onPrevClick = _ref.onPrevClick,
|
|
78
78
|
onDotClick = _ref.onDotClick,
|
|
79
79
|
onChange = _ref.onChange,
|
|
80
|
-
dataAttrs = _ref.dataAttrs
|
|
80
|
+
dataAttrs = _ref.dataAttrs,
|
|
81
|
+
_ref$pauseOnHover = _ref.pauseOnHover,
|
|
82
|
+
pauseOnHover = _ref$pauseOnHover === void 0 ? false : _ref$pauseOnHover;
|
|
81
83
|
|
|
82
84
|
var _React$useState = React.useState(),
|
|
83
85
|
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
@@ -97,29 +99,42 @@ var Banner = function Banner(_ref) {
|
|
|
97
99
|
var _React$useState7 = React.useState(autoPlay),
|
|
98
100
|
_React$useState8 = (0, _slicedToArray2["default"])(_React$useState7, 2),
|
|
99
101
|
isAutoPlaying = _React$useState8[0],
|
|
100
|
-
|
|
102
|
+
setAutoPlaying = _React$useState8[1];
|
|
101
103
|
|
|
102
104
|
var _React$useState9 = React.useState(0),
|
|
103
105
|
_React$useState10 = (0, _slicedToArray2["default"])(_React$useState9, 2),
|
|
104
106
|
activeIndex = _React$useState10[0],
|
|
105
107
|
setActiveIndex = _React$useState10[1];
|
|
106
108
|
|
|
109
|
+
var _React$useState11 = React.useState(autoPlayDelay),
|
|
110
|
+
_React$useState12 = (0, _slicedToArray2["default"])(_React$useState11, 2),
|
|
111
|
+
delay = _React$useState12[0],
|
|
112
|
+
setDelay = _React$useState12[1];
|
|
113
|
+
|
|
114
|
+
var _React$useState13 = React.useState(false),
|
|
115
|
+
_React$useState14 = (0, _slicedToArray2["default"])(_React$useState13, 2),
|
|
116
|
+
isIncreasedDelay = _React$useState14[0],
|
|
117
|
+
setIsIncreasedDelay = _React$useState14[1];
|
|
118
|
+
|
|
107
119
|
var showDotTimer = loop ? isAutoPlaying : isAutoPlaying && !isEnd;
|
|
108
|
-
var dotTimerDelay =
|
|
120
|
+
var dotTimerDelay = delay / 1000;
|
|
109
121
|
var navArrowTheme = navTheme === NavTheme.DARK ? _NavArrow.Theme.DARK : _NavArrow.Theme.PURPLE;
|
|
122
|
+
var rootRef = React.useRef(null);
|
|
110
123
|
var increaseAutoplayDelay = React.useCallback(function (_ref2) {
|
|
111
124
|
var params = _ref2.params,
|
|
112
125
|
autoplay = _ref2.autoplay;
|
|
113
126
|
|
|
114
|
-
if ((0, _typeof2["default"])(params.autoplay) !== 'object' || !
|
|
127
|
+
if ((0, _typeof2["default"])(params.autoplay) !== 'object' || !autoPlay) {
|
|
115
128
|
return;
|
|
116
129
|
}
|
|
117
130
|
|
|
118
131
|
autoplay.stop(); // eslint-disable-next-line no-param-reassign
|
|
119
132
|
|
|
120
133
|
params.autoplay.delay = autoPlayDelay * 3;
|
|
134
|
+
setDelay(autoPlayDelay * 3);
|
|
135
|
+
setIsIncreasedDelay(true);
|
|
121
136
|
autoplay.start();
|
|
122
|
-
}, [autoPlayDelay]);
|
|
137
|
+
}, [autoPlay, autoPlayDelay]);
|
|
123
138
|
var handlePrevClick = React.useCallback(function () {
|
|
124
139
|
if (!swiperInstance) {
|
|
125
140
|
return;
|
|
@@ -127,8 +142,8 @@ var Banner = function Banner(_ref) {
|
|
|
127
142
|
|
|
128
143
|
swiperInstance.slidePrev();
|
|
129
144
|
onPrevClick === null || onPrevClick === void 0 ? void 0 : onPrevClick(swiperInstance.realIndex);
|
|
130
|
-
increaseAutoplayDelay(swiperInstance);
|
|
131
|
-
}, [swiperInstance, onPrevClick, increaseAutoplayDelay]);
|
|
145
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
146
|
+
}, [swiperInstance, onPrevClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
132
147
|
var handleNextClick = React.useCallback(function () {
|
|
133
148
|
if (!swiperInstance) {
|
|
134
149
|
return;
|
|
@@ -136,8 +151,8 @@ var Banner = function Banner(_ref) {
|
|
|
136
151
|
|
|
137
152
|
swiperInstance.slideNext();
|
|
138
153
|
onNextClick === null || onNextClick === void 0 ? void 0 : onNextClick(swiperInstance.realIndex);
|
|
139
|
-
increaseAutoplayDelay(swiperInstance);
|
|
140
|
-
}, [swiperInstance, onNextClick, increaseAutoplayDelay]);
|
|
154
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
155
|
+
}, [swiperInstance, onNextClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
141
156
|
var handleDotClick = React.useCallback(function (index) {
|
|
142
157
|
if (!swiperInstance) {
|
|
143
158
|
return;
|
|
@@ -150,11 +165,8 @@ var Banner = function Banner(_ref) {
|
|
|
150
165
|
}
|
|
151
166
|
|
|
152
167
|
onDotClick === null || onDotClick === void 0 ? void 0 : onDotClick(swiperInstance.realIndex);
|
|
153
|
-
increaseAutoplayDelay(swiperInstance);
|
|
154
|
-
}, [swiperInstance, loop, onDotClick, increaseAutoplayDelay]);
|
|
155
|
-
var handleSwiper = React.useCallback(function (swiper) {
|
|
156
|
-
setSwiperInstance(swiper);
|
|
157
|
-
}, []);
|
|
168
|
+
!isIncreasedDelay && increaseAutoplayDelay(swiperInstance);
|
|
169
|
+
}, [swiperInstance, loop, onDotClick, isIncreasedDelay, increaseAutoplayDelay]);
|
|
158
170
|
var handleReachBeginning = React.useCallback(function () {
|
|
159
171
|
setBeginning(true);
|
|
160
172
|
}, []);
|
|
@@ -176,24 +188,37 @@ var Banner = function Banner(_ref) {
|
|
|
176
188
|
setActiveIndex(realIndex);
|
|
177
189
|
onChange === null || onChange === void 0 ? void 0 : onChange(realIndex);
|
|
178
190
|
}, [onChange]);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
React.useEffect(function () {
|
|
192
|
+
var rootElement = rootRef.current;
|
|
193
|
+
|
|
194
|
+
if (!pauseOnHover || !autoPlay) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('mouseenter', function () {
|
|
199
|
+
swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay.stop();
|
|
200
|
+
setAutoPlaying(false);
|
|
201
|
+
});
|
|
202
|
+
rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('mouseleave', function () {
|
|
203
|
+
swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay.start();
|
|
204
|
+
setAutoPlaying(true);
|
|
205
|
+
});
|
|
206
|
+
}, [autoPlay, pauseOnHover, swiperInstance === null || swiperInstance === void 0 ? void 0 : swiperInstance.autoplay]);
|
|
182
207
|
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
183
208
|
className: cn({
|
|
184
209
|
'nav-theme': navTheme
|
|
185
|
-
}, className)
|
|
210
|
+
}, className),
|
|
211
|
+
ref: rootRef
|
|
186
212
|
}), /*#__PURE__*/React.createElement(_react2.Swiper, (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.swiper), {
|
|
187
213
|
className: cn('swiper'),
|
|
188
214
|
loop: loop,
|
|
189
215
|
autoplay: autoPlay ? getAutoPlayConfig(autoPlayDelay) : false,
|
|
190
216
|
watchSlidesVisibility: true,
|
|
191
|
-
onSwiper:
|
|
217
|
+
onSwiper: setSwiperInstance,
|
|
192
218
|
onReachBeginning: handleReachBeginning,
|
|
193
219
|
onReachEnd: handleReachEnd,
|
|
194
220
|
onFromEdge: handleFromEdge,
|
|
195
221
|
onSlideChange: handleSlideChange,
|
|
196
|
-
onAutoplayStop: handleAutoplayStop,
|
|
197
222
|
onTouchEnd: increaseAutoplayDelay
|
|
198
223
|
}), React.Children.map(children, function (child, i) {
|
|
199
224
|
return /*#__PURE__*/React.createElement(_react2.SwiperSlide, (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.slide, i + 1), {
|
|
@@ -260,6 +285,7 @@ Banner.propTypes = {
|
|
|
260
285
|
}),
|
|
261
286
|
autoPlay: PropTypes.bool,
|
|
262
287
|
autoPlayDelay: PropTypes.number,
|
|
288
|
+
pauseOnHover: PropTypes.bool,
|
|
263
289
|
navTheme: PropTypes.oneOf(Object.values(NavTheme)),
|
|
264
290
|
onNextClick: PropTypes.func,
|
|
265
291
|
onPrevClick: PropTypes.func,
|
|
@@ -372,7 +372,7 @@ var Select = function Select(_ref) {
|
|
|
372
372
|
|
|
373
373
|
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title), {
|
|
374
374
|
className: cn('title', {
|
|
375
|
-
placeholder: !!placeholder &&
|
|
375
|
+
placeholder: !!placeholder && currentValue === undefined
|
|
376
376
|
}, [classes === null || classes === void 0 ? void 0 : classes.title]),
|
|
377
377
|
role: "button",
|
|
378
378
|
tabIndex: 0,
|
|
@@ -58,7 +58,7 @@ var Switcher = function Switcher(_ref) {
|
|
|
58
58
|
size: textSize,
|
|
59
59
|
left: true
|
|
60
60
|
})
|
|
61
|
-
}, children), /*#__PURE__*/React.createElement("div", {
|
|
61
|
+
}, children), /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
|
|
62
62
|
className: cn('input', {
|
|
63
63
|
checked: checked,
|
|
64
64
|
disabled: disabled,
|
|
@@ -68,7 +68,7 @@ var Switcher = function Switcher(_ref) {
|
|
|
68
68
|
onClick: handleChange,
|
|
69
69
|
onKeyDown: handleChange,
|
|
70
70
|
tabIndex: isInteractiveDisabled ? undefined : 0
|
|
71
|
-
}, showLoader && !disabled && /*#__PURE__*/React.createElement("div", {
|
|
71
|
+
}), showLoader && !disabled && /*#__PURE__*/React.createElement("div", {
|
|
72
72
|
className: cn('loader')
|
|
73
73
|
}), /*#__PURE__*/React.createElement("div", {
|
|
74
74
|
className: cn('pointer')
|
|
@@ -81,7 +81,8 @@ var Switcher = function Switcher(_ref) {
|
|
|
81
81
|
|
|
82
82
|
Switcher.propTypes = {
|
|
83
83
|
dataAttrs: PropTypes.shape({
|
|
84
|
-
root: PropTypes.objectOf(PropTypes.string.isRequired)
|
|
84
|
+
root: PropTypes.objectOf(PropTypes.string.isRequired),
|
|
85
|
+
input: PropTypes.objectOf(PropTypes.string.isRequired)
|
|
85
86
|
}),
|
|
86
87
|
className: PropTypes.string,
|
|
87
88
|
textSize: PropTypes.oneOf(['small', 'medium']),
|
|
@@ -39,6 +39,8 @@ export interface ITooltipProps {
|
|
|
39
39
|
isOpened?: boolean;
|
|
40
40
|
/** Отрендерить компонент в корневой элементе страницы body */
|
|
41
41
|
isPortal?: boolean;
|
|
42
|
+
/** Рендеринг компонента в указанном селекторе */
|
|
43
|
+
portalSelector?: string;
|
|
42
44
|
/** Дополнительный класс корневого элемента */
|
|
43
45
|
className?: string;
|
|
44
46
|
/** Дополнительные классы для внутренних элементов */
|
|
@@ -76,6 +76,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
76
76
|
isOpened = _ref$isOpened === void 0 ? false : _ref$isOpened,
|
|
77
77
|
_ref$isPortal = _ref.isPortal,
|
|
78
78
|
isPortal = _ref$isPortal === void 0 ? false : _ref$isPortal,
|
|
79
|
+
portalSelector = _ref.portalSelector,
|
|
79
80
|
children = _ref.children,
|
|
80
81
|
_ref$classes = _ref.classes;
|
|
81
82
|
_ref$classes = _ref$classes === void 0 ? {} : _ref$classes;
|
|
@@ -251,12 +252,14 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
251
252
|
(0, _react.useEffect)(function () {
|
|
252
253
|
return function () {
|
|
253
254
|
if (portalElem.current) {
|
|
254
|
-
document.
|
|
255
|
+
var parent = portalSelector ? document.querySelector(portalSelector) : document.body;
|
|
256
|
+
parent === null || parent === void 0 ? void 0 : parent.removeChild(portalElem.current);
|
|
255
257
|
}
|
|
256
258
|
|
|
257
259
|
portalElem.current = null;
|
|
258
260
|
};
|
|
259
|
-
},
|
|
261
|
+
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
262
|
+
[]);
|
|
260
263
|
|
|
261
264
|
var template = /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
262
265
|
className: cn({
|
|
@@ -286,7 +289,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
286
289
|
|
|
287
290
|
if (isPortal && !portalElem.current && typeof window !== 'undefined') {
|
|
288
291
|
portalElem.current = document.createElement('div');
|
|
289
|
-
document.
|
|
292
|
+
var parent = portalSelector ? document.querySelector(portalSelector) : document.body;
|
|
293
|
+
parent === null || parent === void 0 ? void 0 : parent.appendChild(portalElem.current);
|
|
290
294
|
}
|
|
291
295
|
|
|
292
296
|
if (isPortal && portalElem.current) {
|
|
@@ -325,6 +329,7 @@ Tooltip.propTypes = {
|
|
|
325
329
|
}), _propTypes["default"].any])]),
|
|
326
330
|
isOpened: _propTypes["default"].bool,
|
|
327
331
|
isPortal: _propTypes["default"].bool,
|
|
332
|
+
portalSelector: _propTypes["default"].string,
|
|
328
333
|
className: _propTypes["default"].string,
|
|
329
334
|
classes: _propTypes["default"].shape({
|
|
330
335
|
root: _propTypes["default"].string,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@megafon/ui-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.1",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"styles"
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"react-popper": "^2.2.3",
|
|
98
98
|
"swiper": "^6.5.6"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "ab5598d6f428c21c22d939ed586a3795b3d6467a"
|
|
101
101
|
}
|