@megafon/ui-core 4.8.1 → 4.9.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 +28 -0
- package/dist/es/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/es/components/Checkbox/Checkbox.js +3 -2
- package/dist/es/components/ContentArea/ContentArea.d.ts +5 -0
- package/dist/es/components/ContentArea/ContentArea.js +11 -5
- package/dist/es/components/Grid/Grid.d.ts +5 -0
- package/dist/es/components/Grid/Grid.js +11 -5
- package/dist/es/components/Grid/GridColumn.d.ts +4 -0
- package/dist/es/components/Grid/GridColumn.js +8 -3
- package/dist/es/components/Header/Header.d.ts +1 -1
- package/dist/es/components/List/List.css +22 -9
- package/dist/es/components/List/List.js +7 -4
- package/dist/es/components/Tabs/Tabs.css +3 -0
- package/dist/es/components/TextField/TextField.css +9 -0
- package/dist/es/components/TextField/TextField.d.ts +2 -0
- package/dist/es/components/TextField/TextField.js +48 -24
- package/dist/es/components/Tooltip/Tooltip.css +106 -53
- package/dist/es/components/Tooltip/Tooltip.js +22 -19
- package/dist/lib/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/lib/components/Checkbox/Checkbox.js +3 -2
- package/dist/lib/components/ContentArea/ContentArea.d.ts +5 -0
- package/dist/lib/components/ContentArea/ContentArea.js +13 -4
- package/dist/lib/components/Grid/Grid.d.ts +5 -0
- package/dist/lib/components/Grid/Grid.js +13 -4
- package/dist/lib/components/Grid/GridColumn.d.ts +4 -0
- package/dist/lib/components/Grid/GridColumn.js +10 -2
- package/dist/lib/components/Header/Header.d.ts +1 -1
- package/dist/lib/components/List/List.css +22 -9
- package/dist/lib/components/List/List.js +7 -4
- package/dist/lib/components/Tabs/Tabs.css +3 -0
- package/dist/lib/components/TextField/TextField.css +9 -0
- package/dist/lib/components/TextField/TextField.d.ts +2 -0
- package/dist/lib/components/TextField/TextField.js +49 -23
- package/dist/lib/components/Tooltip/Tooltip.css +106 -53
- package/dist/lib/components/Tooltip/Tooltip.js +22 -19
- package/package.json +3 -3
|
@@ -30,14 +30,17 @@ var List = function List(_ref) {
|
|
|
30
30
|
className = _ref.className,
|
|
31
31
|
children = _ref.children;
|
|
32
32
|
var ElementType = as;
|
|
33
|
-
return /*#__PURE__*/React.createElement(
|
|
33
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
34
34
|
className: cn({
|
|
35
35
|
'h-align': align,
|
|
36
36
|
color: color,
|
|
37
|
-
weight: weight
|
|
38
|
-
type: as
|
|
37
|
+
weight: weight
|
|
39
38
|
}, className)
|
|
40
|
-
},
|
|
39
|
+
}, /*#__PURE__*/React.createElement(ElementType, {
|
|
40
|
+
className: cn('inner', {
|
|
41
|
+
type: as
|
|
42
|
+
})
|
|
43
|
+
}, children));
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
List.propTypes = {
|
|
@@ -41,6 +41,15 @@
|
|
|
41
41
|
overflow-y: auto;
|
|
42
42
|
resize: none;
|
|
43
43
|
}
|
|
44
|
+
.mfui-text-field__hidden-textarea {
|
|
45
|
+
position: absolute;
|
|
46
|
+
height: -webkit-min-content;
|
|
47
|
+
height: -moz-min-content;
|
|
48
|
+
height: min-content;
|
|
49
|
+
padding: 0 56px 0 16px;
|
|
50
|
+
word-break: break-all;
|
|
51
|
+
visibility: hidden;
|
|
52
|
+
}
|
|
44
53
|
.mfui-text-field__field_resized {
|
|
45
54
|
-webkit-transition: height 0.1s;
|
|
46
55
|
transition: height 0.1s;
|
|
@@ -88,6 +88,8 @@ export declare type TextFieldProps = {
|
|
|
88
88
|
minTextareaHeight?: MinTextareaHeightType;
|
|
89
89
|
/** Скрывает кнопку ресайза для textarea="flexible" */
|
|
90
90
|
hideResizeButton?: boolean;
|
|
91
|
+
/** Отключает перевод строки по Enter */
|
|
92
|
+
disableEnterLineBreak?: boolean;
|
|
91
93
|
/** Обработчик изменения значения */
|
|
92
94
|
onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
93
95
|
/** Обработчик изменения значения маскированного инпута до обработки маской */
|
|
@@ -9,14 +9,20 @@ exports["default"] = exports.MinTextareaHeight = exports.TextareaTypes = exports
|
|
|
9
9
|
|
|
10
10
|
require("core-js/modules/es.array.concat");
|
|
11
11
|
|
|
12
|
+
require("core-js/modules/es.date.to-string");
|
|
13
|
+
|
|
12
14
|
require("core-js/modules/es.function.name");
|
|
13
15
|
|
|
16
|
+
require("core-js/modules/es.object.to-string");
|
|
17
|
+
|
|
14
18
|
require("core-js/modules/es.object.values");
|
|
15
19
|
|
|
16
20
|
require("core-js/modules/es.parse-float");
|
|
17
21
|
|
|
18
22
|
require("core-js/modules/es.regexp.exec");
|
|
19
23
|
|
|
24
|
+
require("core-js/modules/es.regexp.to-string");
|
|
25
|
+
|
|
20
26
|
require("core-js/modules/es.string.replace");
|
|
21
27
|
|
|
22
28
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -41,6 +47,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
41
47
|
|
|
42
48
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
43
49
|
|
|
50
|
+
/* eslint-disable react/no-multi-comp */
|
|
44
51
|
var Hide = function Hide(props) {
|
|
45
52
|
return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
|
|
46
53
|
viewBox: "0 0 32 32"
|
|
@@ -95,6 +102,13 @@ var DEFAULT_PLACEHOLDERS = {
|
|
|
95
102
|
password: 'Пароль',
|
|
96
103
|
text: 'Текст'
|
|
97
104
|
};
|
|
105
|
+
var converConfig = {
|
|
106
|
+
br: {
|
|
107
|
+
component: function component() {
|
|
108
|
+
return React.createElement('br');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
98
112
|
var Verification = {
|
|
99
113
|
VALID: 'valid',
|
|
100
114
|
ERROR: 'error'
|
|
@@ -107,7 +121,7 @@ var TextareaTypes = {
|
|
|
107
121
|
exports.TextareaTypes = TextareaTypes;
|
|
108
122
|
var MinTextareaHeight = {
|
|
109
123
|
ONE_ROW: ROW_HEIGHT,
|
|
110
|
-
THREE_ROWS: ROW_HEIGHT *
|
|
124
|
+
THREE_ROWS: ROW_HEIGHT * DEFAULT_ROW_COUNT
|
|
111
125
|
};
|
|
112
126
|
exports.MinTextareaHeight = MinTextareaHeight;
|
|
113
127
|
var cn = (0, _uiHelpers.cnCreate)('mfui-text-field');
|
|
@@ -135,6 +149,8 @@ var TextField = function TextField(_ref) {
|
|
|
135
149
|
isControlled = _ref$isControlled === void 0 ? false : _ref$isControlled,
|
|
136
150
|
_ref$minTextareaHeigh = _ref.minTextareaHeight,
|
|
137
151
|
minTextareaHeight = _ref$minTextareaHeigh === void 0 ? MinTextareaHeight.THREE_ROWS : _ref$minTextareaHeigh,
|
|
152
|
+
_ref$disableEnterLine = _ref.disableEnterLineBreak,
|
|
153
|
+
disableEnterLineBreak = _ref$disableEnterLine === void 0 ? false : _ref$disableEnterLine,
|
|
138
154
|
_ref$hideResizeButton = _ref.hideResizeButton,
|
|
139
155
|
hideResizeButton = _ref$hideResizeButton === void 0 ? false : _ref$hideResizeButton,
|
|
140
156
|
onBlur = _ref.onBlur,
|
|
@@ -171,8 +187,8 @@ var TextField = function TextField(_ref) {
|
|
|
171
187
|
|
|
172
188
|
var _useState5 = (0, React.useState)(minTextareaHeight),
|
|
173
189
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
174
|
-
|
|
175
|
-
|
|
190
|
+
textareaHeight = _useState6[0],
|
|
191
|
+
setTextareaHeight = _useState6[1];
|
|
176
192
|
|
|
177
193
|
var _useState7 = (0, React.useState)(false),
|
|
178
194
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
@@ -195,6 +211,7 @@ var TextField = function TextField(_ref) {
|
|
|
195
211
|
setIsTextareaResized = _useState14[1];
|
|
196
212
|
|
|
197
213
|
var fieldNode = (0, React.useRef)();
|
|
214
|
+
var hiddenElement = (0, React.useRef)(null);
|
|
198
215
|
var labelRef = (0, React.useRef)(null);
|
|
199
216
|
var resizerRef = (0, React.useRef)(null);
|
|
200
217
|
var isPasswordType = (0, React.useMemo)(function () {
|
|
@@ -218,6 +235,15 @@ var TextField = function TextField(_ref) {
|
|
|
218
235
|
|
|
219
236
|
setIsMaxLimitExceeded(symbolCounter < String(textareaValue).length);
|
|
220
237
|
}, [symbolCounter]);
|
|
238
|
+
(0, React.useEffect)(function () {
|
|
239
|
+
if (!hiddenElement.current) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
var hiddenElementHeight = hiddenElement.current.scrollHeight;
|
|
244
|
+
var isHiddenHeightCorrect = hiddenElementHeight >= minTextareaHeight && hiddenElementHeight <= TEXTAREA_MAX_HEIGHT;
|
|
245
|
+
!isTextareaResized && setTextareaHeight(isHiddenHeightCorrect ? hiddenElementHeight : minTextareaHeight);
|
|
246
|
+
}, [hiddenElement, isTextareaResized, minTextareaHeight, inputValue]);
|
|
221
247
|
(0, React.useEffect)(function () {
|
|
222
248
|
!isControlled && setInputValue(value);
|
|
223
249
|
checkSymbolMaxLimit(value);
|
|
@@ -243,7 +269,7 @@ var TextField = function TextField(_ref) {
|
|
|
243
269
|
var currentCoordinateY = moveEvent.clientY || moveEvent.touches[0].clientY;
|
|
244
270
|
var resizeHeight = originalHeight + (currentCoordinateY - originalCoordinateY);
|
|
245
271
|
var updatedHeight = resizeHeight < minTextareaHeight ? minTextareaHeight : resizeHeight;
|
|
246
|
-
|
|
272
|
+
setTextareaHeight(updatedHeight);
|
|
247
273
|
setIsTextareaResized(true);
|
|
248
274
|
}, _throttleTime["default"].resizeTextarea);
|
|
249
275
|
|
|
@@ -270,22 +296,7 @@ var TextField = function TextField(_ref) {
|
|
|
270
296
|
});
|
|
271
297
|
}, []);
|
|
272
298
|
|
|
273
|
-
var setTextareaHeight = function setTextareaHeight() {
|
|
274
|
-
if (!(fieldNode === null || fieldNode === void 0 ? void 0 : fieldNode.current) || isTextareaResized) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
var scrollHeight = fieldNode.current.scrollHeight;
|
|
279
|
-
var extraRowCount = Math.round((scrollHeight - 28 - minTextareaHeight) / ROW_HEIGHT);
|
|
280
|
-
var newHeight = extraRowCount <= DEFAULT_ROW_COUNT ? minTextareaHeight + ROW_HEIGHT * extraRowCount : TEXTAREA_MAX_HEIGHT;
|
|
281
|
-
setInitialTextareaHeight(newHeight);
|
|
282
|
-
};
|
|
283
|
-
|
|
284
299
|
var handleInputChange = function handleInputChange(e) {
|
|
285
|
-
if (textarea === TextareaTypes.FLEXIBLE) {
|
|
286
|
-
setTextareaHeight();
|
|
287
|
-
}
|
|
288
|
-
|
|
289
300
|
!isControlled && setInputValue(e.target.value);
|
|
290
301
|
checkSymbolMaxLimit(e.target.value);
|
|
291
302
|
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
@@ -310,6 +321,10 @@ var TextField = function TextField(_ref) {
|
|
|
310
321
|
labelRef.current.style.top = "".concat(DEFAULT_LABEL_TOP_POSITION - scrollTop, "px");
|
|
311
322
|
};
|
|
312
323
|
|
|
324
|
+
var handleTextareaKeyDown = function handleTextareaKeyDown(e) {
|
|
325
|
+
(0, _uiHelpers.checkEventIsClickOrEnterPress)(e) && !e.shiftKey && e.preventDefault();
|
|
326
|
+
};
|
|
327
|
+
|
|
313
328
|
var handleIconClick = (0, React.useCallback)(function (e) {
|
|
314
329
|
var isClearFuncAvailable = !customIcon && !onCustomIconClick && hasClearIcon;
|
|
315
330
|
var field = fieldNode.current;
|
|
@@ -418,13 +433,23 @@ var TextField = function TextField(_ref) {
|
|
|
418
433
|
};
|
|
419
434
|
|
|
420
435
|
var renderTextarea = function renderTextarea() {
|
|
436
|
+
var _a;
|
|
437
|
+
|
|
438
|
+
var hiddenValue = inputValue === null || inputValue === void 0 ? void 0 : inputValue.toString().replace(/[\r\n]/g, '<br/>');
|
|
421
439
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("textarea", (0, _extends2["default"])({}, textareaParams, {
|
|
422
|
-
onScroll: handleTextareaScroll,
|
|
423
440
|
style: {
|
|
424
|
-
height: "".concat(
|
|
441
|
+
height: "".concat(textareaHeight, "px")
|
|
425
442
|
},
|
|
426
|
-
ref: getFieldNode
|
|
427
|
-
|
|
443
|
+
ref: getFieldNode,
|
|
444
|
+
onKeyDown: disableEnterLineBreak ? handleTextareaKeyDown : undefined,
|
|
445
|
+
onScroll: handleTextareaScroll
|
|
446
|
+
})), !!hiddenValue && /*#__PURE__*/React.createElement("div", {
|
|
447
|
+
className: cn('hidden-textarea'),
|
|
448
|
+
ref: hiddenElement,
|
|
449
|
+
style: {
|
|
450
|
+
width: (_a = fieldNode.current) === null || _a === void 0 ? void 0 : _a.scrollWidth
|
|
451
|
+
}
|
|
452
|
+
}, (0, _uiHelpers.convert)(hiddenValue, converConfig), "."), renderLabel());
|
|
428
453
|
};
|
|
429
454
|
|
|
430
455
|
var renderIconBlock = function renderIconBlock() {
|
|
@@ -521,6 +546,7 @@ TextField.propTypes = {
|
|
|
521
546
|
className: PropTypes.string,
|
|
522
547
|
minTextareaHeight: PropTypes.oneOf([24, 72]),
|
|
523
548
|
hideResizeButton: PropTypes.bool,
|
|
549
|
+
disableEnterLineBreak: PropTypes.bool,
|
|
524
550
|
onChange: PropTypes.func,
|
|
525
551
|
onBeforeMaskChange: PropTypes.func,
|
|
526
552
|
onBlur: PropTypes.func,
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
transition-duration: 0.3s;
|
|
7
7
|
-webkit-transition-property: opacity, visibility;
|
|
8
8
|
transition-property: opacity, visibility;
|
|
9
|
-
font-size: 12px;
|
|
10
|
-
line-height: 18px;
|
|
11
9
|
pointer-events: none;
|
|
12
10
|
}
|
|
13
11
|
.mfui-tooltip_open {
|
|
@@ -24,6 +22,18 @@
|
|
|
24
22
|
.mfui-tooltip__content {
|
|
25
23
|
position: relative;
|
|
26
24
|
z-index: 1;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
.mfui-tooltip__content-shadow {
|
|
28
|
+
position: absolute;
|
|
29
|
+
top: 0;
|
|
30
|
+
right: 0;
|
|
31
|
+
bottom: 0;
|
|
32
|
+
left: 0;
|
|
33
|
+
z-index: -1;
|
|
34
|
+
}
|
|
35
|
+
.mfui-tooltip__top,
|
|
36
|
+
.mfui-tooltip__main-content {
|
|
27
37
|
display: -webkit-box;
|
|
28
38
|
display: -ms-flexbox;
|
|
29
39
|
display: flex;
|
|
@@ -33,24 +43,33 @@
|
|
|
33
43
|
flex-direction: column;
|
|
34
44
|
gap: 8px;
|
|
35
45
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
@media screen and (min-width: 768px) {
|
|
47
|
+
.mfui-tooltip__top {
|
|
48
|
+
gap: 12px;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
.mfui-tooltip__top_margin {
|
|
52
|
+
margin-bottom: 16px;
|
|
43
53
|
}
|
|
44
54
|
.mfui-tooltip__arrow-container {
|
|
45
55
|
position: absolute;
|
|
46
56
|
}
|
|
47
57
|
.mfui-tooltip__arrow-wrap {
|
|
48
|
-
width:
|
|
49
|
-
height:
|
|
58
|
+
width: 33px;
|
|
59
|
+
height: 13px;
|
|
50
60
|
}
|
|
51
61
|
.mfui-tooltip__arrow {
|
|
52
|
-
width:
|
|
53
|
-
height:
|
|
62
|
+
width: 33px;
|
|
63
|
+
height: 13px;
|
|
64
|
+
position: absolute;
|
|
65
|
+
display: -webkit-box;
|
|
66
|
+
display: -ms-flexbox;
|
|
67
|
+
display: flex;
|
|
68
|
+
-webkit-box-pack: center;
|
|
69
|
+
-ms-flex-pack: center;
|
|
70
|
+
justify-content: center;
|
|
71
|
+
}
|
|
72
|
+
.mfui-tooltip__arrow svg {
|
|
54
73
|
position: absolute;
|
|
55
74
|
}
|
|
56
75
|
.mfui-tooltip__arrow-inner {
|
|
@@ -59,8 +78,24 @@
|
|
|
59
78
|
fill: var(--base);
|
|
60
79
|
}
|
|
61
80
|
.mfui-tooltip__text {
|
|
62
|
-
font-size:
|
|
63
|
-
line-height:
|
|
81
|
+
font-size: 15px;
|
|
82
|
+
line-height: 24px;
|
|
83
|
+
}
|
|
84
|
+
@media screen and (max-width: 767px) {
|
|
85
|
+
.mfui-tooltip__text {
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
line-height: 18px;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
.mfui-tooltip__bottom {
|
|
91
|
+
display: -webkit-box;
|
|
92
|
+
display: -ms-flexbox;
|
|
93
|
+
display: flex;
|
|
94
|
+
-webkit-box-orient: vertical;
|
|
95
|
+
-webkit-box-direction: normal;
|
|
96
|
+
-ms-flex-direction: column;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
gap: 16px;
|
|
64
99
|
}
|
|
65
100
|
.mfui-tooltip__button,
|
|
66
101
|
.mfui-tooltip__close-button {
|
|
@@ -80,12 +115,18 @@
|
|
|
80
115
|
font-family: inherit;
|
|
81
116
|
color: var(--brandGreen);
|
|
82
117
|
font-weight: 500;
|
|
83
|
-
font-size:
|
|
84
|
-
line-height:
|
|
118
|
+
font-size: 15px;
|
|
119
|
+
line-height: 18px;
|
|
85
120
|
background-color: transparent;
|
|
86
121
|
-webkit-transition: 300ms;
|
|
87
122
|
transition: 300ms;
|
|
88
123
|
}
|
|
124
|
+
@media screen and (max-width: 767px) {
|
|
125
|
+
.mfui-tooltip__button {
|
|
126
|
+
font-size: 12px;
|
|
127
|
+
line-height: 14px;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
89
130
|
.mfui-tooltip__button:hover {
|
|
90
131
|
color: var(--buttonHoverGreen);
|
|
91
132
|
}
|
|
@@ -99,15 +140,15 @@
|
|
|
99
140
|
fill: var(--buttonDown);
|
|
100
141
|
}
|
|
101
142
|
.mfui-tooltip__close-button {
|
|
102
|
-
position:
|
|
103
|
-
top:
|
|
104
|
-
right:
|
|
143
|
+
position: relative;
|
|
144
|
+
top: -6px;
|
|
145
|
+
right: -6px;
|
|
105
146
|
-webkit-box-pack: center;
|
|
106
147
|
-ms-flex-pack: center;
|
|
107
148
|
justify-content: center;
|
|
149
|
+
float: right;
|
|
108
150
|
width: 24px;
|
|
109
151
|
height: 24px;
|
|
110
|
-
margin-left: 24px;
|
|
111
152
|
border-radius: 12px;
|
|
112
153
|
background-color: var(--spbSky0);
|
|
113
154
|
-webkit-transition: 300ms;
|
|
@@ -140,9 +181,9 @@
|
|
|
140
181
|
display: -ms-flexbox;
|
|
141
182
|
display: flex;
|
|
142
183
|
-webkit-box-orient: horizontal;
|
|
143
|
-
-webkit-box-direction:
|
|
144
|
-
-ms-flex-direction: row;
|
|
145
|
-
flex-direction: row;
|
|
184
|
+
-webkit-box-direction: reverse;
|
|
185
|
+
-ms-flex-direction: row-reverse;
|
|
186
|
+
flex-direction: row-reverse;
|
|
146
187
|
gap: 18px;
|
|
147
188
|
-webkit-box-align: center;
|
|
148
189
|
-ms-flex-align: center;
|
|
@@ -152,8 +193,7 @@
|
|
|
152
193
|
font-weight: 500;
|
|
153
194
|
}
|
|
154
195
|
.mfui-tooltip_small .mfui-tooltip__close-button {
|
|
155
|
-
|
|
156
|
-
margin-left: 0;
|
|
196
|
+
top: auto;
|
|
157
197
|
}
|
|
158
198
|
.mfui-tooltip_theme_red .mfui-tooltip__content,
|
|
159
199
|
.mfui-tooltip_theme_blue .mfui-tooltip__content,
|
|
@@ -218,17 +258,19 @@
|
|
|
218
258
|
.mfui-tooltip_theme_blue .mfui-tooltip__arrow-inner {
|
|
219
259
|
fill: var(--reflexBlue80);
|
|
220
260
|
}
|
|
221
|
-
.mfui-tooltip[data-popper-placement='right'] .mfui-
|
|
222
|
-
.mfui-tooltip[data-popper-placement='right-start'] .mfui-
|
|
223
|
-
.mfui-tooltip[data-popper-placement='right-end'] .mfui-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
261
|
+
.mfui-tooltip[data-popper-placement='right'] .mfui-tooltip__content,
|
|
262
|
+
.mfui-tooltip[data-popper-placement='right-start'] .mfui-tooltip__content,
|
|
263
|
+
.mfui-tooltip[data-popper-placement='right-end'] .mfui-tooltip__content,
|
|
264
|
+
.mfui-tooltip[data-popper-placement='right'] .mfui-tooltip__content-shadow,
|
|
265
|
+
.mfui-tooltip[data-popper-placement='right-start'] .mfui-tooltip__content-shadow,
|
|
266
|
+
.mfui-tooltip[data-popper-placement='right-end'] .mfui-tooltip__content-shadow {
|
|
267
|
+
-webkit-transform: translateX(24px);
|
|
268
|
+
transform: translateX(24px);
|
|
227
269
|
}
|
|
228
270
|
.mfui-tooltip[data-popper-placement='right'] .mfui-tooltip__arrow-wrap,
|
|
229
271
|
.mfui-tooltip[data-popper-placement='right-start'] .mfui-tooltip__arrow-wrap,
|
|
230
272
|
.mfui-tooltip[data-popper-placement='right-end'] .mfui-tooltip__arrow-wrap {
|
|
231
|
-
left:
|
|
273
|
+
left: 3px;
|
|
232
274
|
}
|
|
233
275
|
.mfui-tooltip[data-popper-placement='right'] .mfui-tooltip__arrow,
|
|
234
276
|
.mfui-tooltip[data-popper-placement='right-start'] .mfui-tooltip__arrow,
|
|
@@ -239,17 +281,19 @@
|
|
|
239
281
|
-webkit-transform: rotate(-90deg);
|
|
240
282
|
transform: rotate(-90deg);
|
|
241
283
|
}
|
|
242
|
-
.mfui-tooltip[data-popper-placement='left'] .mfui-
|
|
243
|
-
.mfui-tooltip[data-popper-placement='left-start'] .mfui-
|
|
244
|
-
.mfui-tooltip[data-popper-placement='left-end'] .mfui-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
284
|
+
.mfui-tooltip[data-popper-placement='left'] .mfui-tooltip__content,
|
|
285
|
+
.mfui-tooltip[data-popper-placement='left-start'] .mfui-tooltip__content,
|
|
286
|
+
.mfui-tooltip[data-popper-placement='left-end'] .mfui-tooltip__content,
|
|
287
|
+
.mfui-tooltip[data-popper-placement='left'] .mfui-tooltip__content-shadow,
|
|
288
|
+
.mfui-tooltip[data-popper-placement='left-start'] .mfui-tooltip__content-shadow,
|
|
289
|
+
.mfui-tooltip[data-popper-placement='left-end'] .mfui-tooltip__content-shadow {
|
|
290
|
+
-webkit-transform: translateX(-24px);
|
|
291
|
+
transform: translateX(-24px);
|
|
248
292
|
}
|
|
249
293
|
.mfui-tooltip[data-popper-placement='left'] .mfui-tooltip__arrow-wrap,
|
|
250
294
|
.mfui-tooltip[data-popper-placement='left-start'] .mfui-tooltip__arrow-wrap,
|
|
251
295
|
.mfui-tooltip[data-popper-placement='left-end'] .mfui-tooltip__arrow-wrap {
|
|
252
|
-
right:
|
|
296
|
+
right: 3px;
|
|
253
297
|
}
|
|
254
298
|
.mfui-tooltip[data-popper-placement='left'] .mfui-tooltip__arrow,
|
|
255
299
|
.mfui-tooltip[data-popper-placement='left-start'] .mfui-tooltip__arrow,
|
|
@@ -260,17 +304,19 @@
|
|
|
260
304
|
-webkit-transform: rotate(90deg);
|
|
261
305
|
transform: rotate(90deg);
|
|
262
306
|
}
|
|
263
|
-
.mfui-tooltip[data-popper-placement='top'] .mfui-
|
|
264
|
-
.mfui-tooltip[data-popper-placement='top-start'] .mfui-
|
|
265
|
-
.mfui-tooltip[data-popper-placement='top-end'] .mfui-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
307
|
+
.mfui-tooltip[data-popper-placement='top'] .mfui-tooltip__content,
|
|
308
|
+
.mfui-tooltip[data-popper-placement='top-start'] .mfui-tooltip__content,
|
|
309
|
+
.mfui-tooltip[data-popper-placement='top-end'] .mfui-tooltip__content,
|
|
310
|
+
.mfui-tooltip[data-popper-placement='top'] .mfui-tooltip__content-shadow,
|
|
311
|
+
.mfui-tooltip[data-popper-placement='top-start'] .mfui-tooltip__content-shadow,
|
|
312
|
+
.mfui-tooltip[data-popper-placement='top-end'] .mfui-tooltip__content-shadow {
|
|
313
|
+
-webkit-transform: translateY(-24px);
|
|
314
|
+
transform: translateY(-24px);
|
|
269
315
|
}
|
|
270
316
|
.mfui-tooltip[data-popper-placement='top'] .mfui-tooltip__arrow-wrap,
|
|
271
317
|
.mfui-tooltip[data-popper-placement='top-start'] .mfui-tooltip__arrow-wrap,
|
|
272
318
|
.mfui-tooltip[data-popper-placement='top-end'] .mfui-tooltip__arrow-wrap {
|
|
273
|
-
|
|
319
|
+
bottom: 13px;
|
|
274
320
|
}
|
|
275
321
|
.mfui-tooltip[data-popper-placement='top'] .mfui-tooltip__arrow,
|
|
276
322
|
.mfui-tooltip[data-popper-placement='top-start'] .mfui-tooltip__arrow,
|
|
@@ -281,12 +327,19 @@
|
|
|
281
327
|
-webkit-transform: rotate(180deg);
|
|
282
328
|
transform: rotate(180deg);
|
|
283
329
|
}
|
|
284
|
-
.mfui-tooltip[data-popper-placement='bottom'] .mfui-
|
|
285
|
-
.mfui-tooltip[data-popper-placement='bottom-start'] .mfui-
|
|
286
|
-
.mfui-tooltip[data-popper-placement='bottom-end'] .mfui-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
330
|
+
.mfui-tooltip[data-popper-placement='bottom'] .mfui-tooltip__content,
|
|
331
|
+
.mfui-tooltip[data-popper-placement='bottom-start'] .mfui-tooltip__content,
|
|
332
|
+
.mfui-tooltip[data-popper-placement='bottom-end'] .mfui-tooltip__content,
|
|
333
|
+
.mfui-tooltip[data-popper-placement='bottom'] .mfui-tooltip__content-shadow,
|
|
334
|
+
.mfui-tooltip[data-popper-placement='bottom-start'] .mfui-tooltip__content-shadow,
|
|
335
|
+
.mfui-tooltip[data-popper-placement='bottom-end'] .mfui-tooltip__content-shadow {
|
|
336
|
+
-webkit-transform: translateY(24px);
|
|
337
|
+
transform: translateY(24px);
|
|
338
|
+
}
|
|
339
|
+
.mfui-tooltip[data-popper-placement='bottom'] .mfui-tooltip__arrow-wrap,
|
|
340
|
+
.mfui-tooltip[data-popper-placement='bottom-start'] .mfui-tooltip__arrow-wrap,
|
|
341
|
+
.mfui-tooltip[data-popper-placement='bottom-end'] .mfui-tooltip__arrow-wrap {
|
|
342
|
+
top: 13px;
|
|
290
343
|
}
|
|
291
344
|
.mfui-tooltip[data-popper-escaped='true'].mfui-tooltip_has-escape {
|
|
292
345
|
visibility: hidden;
|
|
@@ -174,6 +174,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
174
174
|
var portalElem = _react["default"].useRef(null);
|
|
175
175
|
|
|
176
176
|
var isBigSize = size === Size.BIG;
|
|
177
|
+
var hasMainContent = !!title || !!text;
|
|
178
|
+
var hasTopContent = hasMainContent || !!buttonText;
|
|
177
179
|
var clickEvent = (0, _react.useMemo)(function () {
|
|
178
180
|
return isTouchDevice ? TOUCH_KEY : MOUSE_KEY;
|
|
179
181
|
}, [isTouchDevice]);
|
|
@@ -192,10 +194,10 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
192
194
|
options: {
|
|
193
195
|
element: arrowElement,
|
|
194
196
|
padding: {
|
|
195
|
-
top:
|
|
196
|
-
right:
|
|
197
|
-
bottom:
|
|
198
|
-
left:
|
|
197
|
+
top: 18,
|
|
198
|
+
right: 8,
|
|
199
|
+
bottom: 18,
|
|
200
|
+
left: 8
|
|
199
201
|
}
|
|
200
202
|
}
|
|
201
203
|
}, {
|
|
@@ -215,11 +217,6 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
215
217
|
options: {
|
|
216
218
|
boundary: currentBoundary
|
|
217
219
|
}
|
|
218
|
-
}, {
|
|
219
|
-
name: 'offset',
|
|
220
|
-
options: {
|
|
221
|
-
offset: [0, 12]
|
|
222
|
-
}
|
|
223
220
|
}]
|
|
224
221
|
};
|
|
225
222
|
}, [placement, arrowElement, currentBoundary, isOpen, fallbackPlacements]);
|
|
@@ -341,21 +338,27 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
341
338
|
}, text);
|
|
342
339
|
}, [text]);
|
|
343
340
|
var renderedFullContent = (0, _react.useMemo)(function () {
|
|
344
|
-
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null,
|
|
341
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, hasTopContent && /*#__PURE__*/_react["default"].createElement("div", {
|
|
342
|
+
className: cn('top', {
|
|
343
|
+
margin: !!children
|
|
344
|
+
})
|
|
345
|
+
}, hasMainContent && /*#__PURE__*/_react["default"].createElement("div", {
|
|
346
|
+
className: cn('main-content')
|
|
347
|
+
}, !!title && /*#__PURE__*/_react["default"].createElement(_Header["default"], {
|
|
345
348
|
className: cn('title'),
|
|
346
349
|
as: "h5",
|
|
347
350
|
space: "tight"
|
|
348
|
-
}, title), !!text && renderedText, !!buttonText && /*#__PURE__*/_react["default"].createElement("button", (0, _extends2["default"])({
|
|
351
|
+
}, title), !!text && renderedText), !!buttonText && /*#__PURE__*/_react["default"].createElement("button", (0, _extends2["default"])({
|
|
349
352
|
type: "button",
|
|
350
353
|
className: cn('button')
|
|
351
354
|
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button), {
|
|
352
355
|
onClick: onClick
|
|
353
356
|
}), buttonText, /*#__PURE__*/_react["default"].createElement(RightArrow, {
|
|
354
357
|
className: cn('button-arrow')
|
|
355
|
-
})), !!children && /*#__PURE__*/_react["default"].createElement("div", {
|
|
358
|
+
}))), !!children && /*#__PURE__*/_react["default"].createElement("div", {
|
|
356
359
|
className: cn('addititonal-content')
|
|
357
360
|
}, children));
|
|
358
|
-
}, [title, text, buttonText, children, dataAttrs, renderedText, onClick]);
|
|
361
|
+
}, [title, text, buttonText, children, dataAttrs, hasTopContent, hasMainContent, renderedText, onClick]);
|
|
359
362
|
|
|
360
363
|
var template = /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
361
364
|
className: cn({
|
|
@@ -368,8 +371,6 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
368
371
|
ref: setPopperElement,
|
|
369
372
|
style: styles.popper
|
|
370
373
|
}, attributes.popper), /*#__PURE__*/_react["default"].createElement("div", {
|
|
371
|
-
className: cn('arrow-container')
|
|
372
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
373
374
|
className: cn('arrow-wrap'),
|
|
374
375
|
ref: setArrowElement,
|
|
375
376
|
style: styles.arrow
|
|
@@ -377,23 +378,25 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
377
378
|
className: cn('arrow', [arrowClassName])
|
|
378
379
|
}, /*#__PURE__*/_react["default"].createElement(Arrow, {
|
|
379
380
|
className: cn('arrow-inner')
|
|
380
|
-
})))
|
|
381
|
+
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
382
|
+
className: cn('content-wrap')
|
|
383
|
+
}, /*#__PURE__*/_react["default"].createElement(_Tile["default"], {
|
|
381
384
|
radius: "rounded",
|
|
382
385
|
dataAttrs: {
|
|
383
386
|
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.content
|
|
384
387
|
},
|
|
385
388
|
className: cn('content', [contentClassName])
|
|
386
|
-
},
|
|
389
|
+
}, hasCloseButton && /*#__PURE__*/_react["default"].createElement("button", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.close), {
|
|
387
390
|
className: cn('close-button'),
|
|
388
391
|
type: "button",
|
|
389
392
|
onClick: handleCloseButtonClick
|
|
390
393
|
}), /*#__PURE__*/_react["default"].createElement(CancelIcon, {
|
|
391
394
|
className: cn('close-icon')
|
|
392
|
-
}))), /*#__PURE__*/_react["default"].createElement(_Tile["default"], {
|
|
395
|
+
})), isBigSize && renderedFullContent, !isBigSize && !!text && renderedText), /*#__PURE__*/_react["default"].createElement(_Tile["default"], {
|
|
393
396
|
radius: "rounded",
|
|
394
397
|
shadowLevel: "high",
|
|
395
398
|
className: cn('content-shadow', [contentShadowClassName])
|
|
396
|
-
}));
|
|
399
|
+
})));
|
|
397
400
|
/* Не в эффекте, чтобы не создавать лишний перерендер компонента. Из-за синхронности кода в return уже будет элемент */
|
|
398
401
|
|
|
399
402
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@megafon/ui-core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.9.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"styles"
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@babel/preset-env": "^7.8.6",
|
|
55
55
|
"@babel/preset-react": "^7.8.3",
|
|
56
56
|
"@babel/preset-typescript": "^7.8.3",
|
|
57
|
-
"@megafon/ui-icons": "^2.
|
|
57
|
+
"@megafon/ui-icons": "^2.4.0",
|
|
58
58
|
"@svgr/core": "^2.4.1",
|
|
59
59
|
"@testing-library/jest-dom": "5.16.2",
|
|
60
60
|
"@testing-library/react": "12.1.2",
|
|
@@ -100,5 +100,5 @@
|
|
|
100
100
|
"react-popper": "^2.2.3",
|
|
101
101
|
"swiper": "^6.5.6"
|
|
102
102
|
},
|
|
103
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "ab9cb505dca6ae5f4e3db5d4a21add24d10a1be1"
|
|
104
104
|
}
|