@megafon/ui-core 4.8.2 → 4.9.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/es/components/ContentArea/ContentArea.d.ts +5 -0
  3. package/dist/es/components/ContentArea/ContentArea.js +11 -5
  4. package/dist/es/components/Counter/Counter.js +13 -12
  5. package/dist/es/components/Grid/Grid.d.ts +5 -0
  6. package/dist/es/components/Grid/Grid.js +11 -5
  7. package/dist/es/components/Grid/GridColumn.d.ts +4 -0
  8. package/dist/es/components/Grid/GridColumn.js +8 -3
  9. package/dist/es/components/Header/Header.d.ts +1 -1
  10. package/dist/es/components/Logo/Logo.d.ts +5 -1
  11. package/dist/es/components/Logo/Logo.js +8 -3
  12. package/dist/es/components/NavArrow/NavArrow.d.ts +2 -0
  13. package/dist/es/components/NavArrow/NavArrow.js +8 -6
  14. package/dist/es/components/TextField/TextField.css +9 -0
  15. package/dist/es/components/TextField/TextField.d.ts +2 -0
  16. package/dist/es/components/TextField/TextField.js +48 -24
  17. package/dist/es/components/Tooltip/Tooltip.css +106 -53
  18. package/dist/es/components/Tooltip/Tooltip.js +22 -19
  19. package/dist/lib/components/ContentArea/ContentArea.d.ts +5 -0
  20. package/dist/lib/components/ContentArea/ContentArea.js +13 -4
  21. package/dist/lib/components/Counter/Counter.js +13 -12
  22. package/dist/lib/components/Grid/Grid.d.ts +5 -0
  23. package/dist/lib/components/Grid/Grid.js +13 -4
  24. package/dist/lib/components/Grid/GridColumn.d.ts +4 -0
  25. package/dist/lib/components/Grid/GridColumn.js +10 -2
  26. package/dist/lib/components/Header/Header.d.ts +1 -1
  27. package/dist/lib/components/Logo/Logo.d.ts +5 -1
  28. package/dist/lib/components/Logo/Logo.js +8 -3
  29. package/dist/lib/components/NavArrow/NavArrow.d.ts +2 -0
  30. package/dist/lib/components/NavArrow/NavArrow.js +8 -6
  31. package/dist/lib/components/TextField/TextField.css +9 -0
  32. package/dist/lib/components/TextField/TextField.d.ts +2 -0
  33. package/dist/lib/components/TextField/TextField.js +49 -23
  34. package/dist/lib/components/Tooltip/Tooltip.css +106 -53
  35. package/dist/lib/components/Tooltip/Tooltip.js +22 -19
  36. package/package.json +2 -2
@@ -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
- .mfui-tooltip__content-shadow {
37
- position: absolute;
38
- top: 0;
39
- right: 0;
40
- bottom: 0;
41
- left: 0;
42
- z-index: -1;
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: 42px;
49
- height: 12px;
58
+ width: 33px;
59
+ height: 13px;
50
60
  }
51
61
  .mfui-tooltip__arrow {
52
- width: 42px;
53
- height: 12px;
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: 12px;
63
- line-height: 18px;
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: 12px;
84
- line-height: 14px;
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: absolute;
103
- top: 10px;
104
- right: 10px;
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: normal;
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
- position: static;
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-tooltip__arrow-container,
222
- .mfui-tooltip[data-popper-placement='right-start'] .mfui-tooltip__arrow-container,
223
- .mfui-tooltip[data-popper-placement='right-end'] .mfui-tooltip__arrow-container {
224
- left: -12px;
225
- width: 12px;
226
- height: 100%;
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: -15px;
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-tooltip__arrow-container,
243
- .mfui-tooltip[data-popper-placement='left-start'] .mfui-tooltip__arrow-container,
244
- .mfui-tooltip[data-popper-placement='left-end'] .mfui-tooltip__arrow-container {
245
- right: -12px;
246
- width: 12px;
247
- height: 100%;
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: -15px;
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-tooltip__arrow-container,
264
- .mfui-tooltip[data-popper-placement='top-start'] .mfui-tooltip__arrow-container,
265
- .mfui-tooltip[data-popper-placement='top-end'] .mfui-tooltip__arrow-container {
266
- bottom: -12px;
267
- width: 100%;
268
- height: 12px;
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
- top: 0;
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-tooltip__arrow-container,
285
- .mfui-tooltip[data-popper-placement='bottom-start'] .mfui-tooltip__arrow-container,
286
- .mfui-tooltip[data-popper-placement='bottom-end'] .mfui-tooltip__arrow-container {
287
- top: -12px;
288
- width: 100%;
289
- height: 12px;
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;
@@ -142,6 +142,8 @@ var Tooltip = function Tooltip(_ref) {
142
142
  var currentBoundary = boundaryElement === null || boundaryElement === void 0 ? void 0 : boundaryElement.current;
143
143
  var portalElem = React.useRef(null);
144
144
  var isBigSize = size === Size.BIG;
145
+ var hasMainContent = !!title || !!text;
146
+ var hasTopContent = hasMainContent || !!buttonText;
145
147
  var clickEvent = useMemo(function () {
146
148
  return isTouchDevice ? TOUCH_KEY : MOUSE_KEY;
147
149
  }, [isTouchDevice]);
@@ -160,10 +162,10 @@ var Tooltip = function Tooltip(_ref) {
160
162
  options: {
161
163
  element: arrowElement,
162
164
  padding: {
163
- top: 17,
164
- right: 1,
165
- bottom: 17,
166
- left: 1
165
+ top: 18,
166
+ right: 8,
167
+ bottom: 18,
168
+ left: 8
167
169
  }
168
170
  }
169
171
  }, {
@@ -183,11 +185,6 @@ var Tooltip = function Tooltip(_ref) {
183
185
  options: {
184
186
  boundary: currentBoundary
185
187
  }
186
- }, {
187
- name: 'offset',
188
- options: {
189
- offset: [0, 12]
190
- }
191
188
  }]
192
189
  };
193
190
  }, [placement, arrowElement, currentBoundary, isOpen, fallbackPlacements]);
@@ -309,21 +306,27 @@ var Tooltip = function Tooltip(_ref) {
309
306
  }, text);
310
307
  }, [text]);
311
308
  var renderedFullContent = useMemo(function () {
312
- return /*#__PURE__*/React.createElement(React.Fragment, null, !!title && /*#__PURE__*/React.createElement(Header, {
309
+ return /*#__PURE__*/React.createElement(React.Fragment, null, hasTopContent && /*#__PURE__*/React.createElement("div", {
310
+ className: cn('top', {
311
+ margin: !!children
312
+ })
313
+ }, hasMainContent && /*#__PURE__*/React.createElement("div", {
314
+ className: cn('main-content')
315
+ }, !!title && /*#__PURE__*/React.createElement(Header, {
313
316
  className: cn('title'),
314
317
  as: "h5",
315
318
  space: "tight"
316
- }, title), !!text && renderedText, !!buttonText && /*#__PURE__*/React.createElement("button", _extends({
319
+ }, title), !!text && renderedText), !!buttonText && /*#__PURE__*/React.createElement("button", _extends({
317
320
  type: "button",
318
321
  className: cn('button')
319
322
  }, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button), {
320
323
  onClick: onClick
321
324
  }), buttonText, /*#__PURE__*/React.createElement(RightArrow, {
322
325
  className: cn('button-arrow')
323
- })), !!children && /*#__PURE__*/React.createElement("div", {
326
+ }))), !!children && /*#__PURE__*/React.createElement("div", {
324
327
  className: cn('addititonal-content')
325
328
  }, children));
326
- }, [title, text, buttonText, children, dataAttrs, renderedText, onClick]);
329
+ }, [title, text, buttonText, children, dataAttrs, hasTopContent, hasMainContent, renderedText, onClick]);
327
330
  var template = /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
328
331
  className: cn({
329
332
  theme: theme,
@@ -335,8 +338,6 @@ var Tooltip = function Tooltip(_ref) {
335
338
  ref: setPopperElement,
336
339
  style: styles.popper
337
340
  }, attributes.popper), /*#__PURE__*/React.createElement("div", {
338
- className: cn('arrow-container')
339
- }, /*#__PURE__*/React.createElement("div", {
340
341
  className: cn('arrow-wrap'),
341
342
  ref: setArrowElement,
342
343
  style: styles.arrow
@@ -344,23 +345,25 @@ var Tooltip = function Tooltip(_ref) {
344
345
  className: cn('arrow', [arrowClassName])
345
346
  }, /*#__PURE__*/React.createElement(Arrow, {
346
347
  className: cn('arrow-inner')
347
- })))), /*#__PURE__*/React.createElement(Tile, {
348
+ }))), /*#__PURE__*/React.createElement("div", {
349
+ className: cn('content-wrap')
350
+ }, /*#__PURE__*/React.createElement(Tile, {
348
351
  radius: "rounded",
349
352
  dataAttrs: {
350
353
  root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.content
351
354
  },
352
355
  className: cn('content', [contentClassName])
353
- }, isBigSize && renderedFullContent, !isBigSize && !!text && renderedText, hasCloseButton && /*#__PURE__*/React.createElement("button", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.close), {
356
+ }, hasCloseButton && /*#__PURE__*/React.createElement("button", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.close), {
354
357
  className: cn('close-button'),
355
358
  type: "button",
356
359
  onClick: handleCloseButtonClick
357
360
  }), /*#__PURE__*/React.createElement(CancelIcon, {
358
361
  className: cn('close-icon')
359
- }))), /*#__PURE__*/React.createElement(Tile, {
362
+ })), isBigSize && renderedFullContent, !isBigSize && !!text && renderedText), /*#__PURE__*/React.createElement(Tile, {
360
363
  radius: "rounded",
361
364
  shadowLevel: "high",
362
365
  className: cn('content-shadow', [contentShadowClassName])
363
- }));
366
+ })));
364
367
  /* Не в эффекте, чтобы не создавать лишний перерендер компонента. Из-за синхронности кода в return уже будет элемент */
365
368
 
366
369
  if (isPortal && !portalElem.current && typeof window !== 'undefined') {
@@ -32,6 +32,11 @@ export interface IConrentAreaProps {
32
32
  root?: string;
33
33
  inner?: string;
34
34
  };
35
+ /** Дополнительные data атрибуты к внутренним элементам */
36
+ dataAttrs?: {
37
+ root?: Record<string, string>;
38
+ inner?: Record<string, string>;
39
+ };
35
40
  }
36
41
  declare const ContentArea: React.FC<IConrentAreaProps>;
37
42
  export default ContentArea;
@@ -9,6 +9,8 @@ exports["default"] = void 0;
9
9
 
10
10
  require("core-js/modules/es.object.values");
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
12
14
  var React = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _uiHelpers = require("@megafon/ui-helpers");
@@ -19,6 +21,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
19
21
 
20
22
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
23
 
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
+
22
26
  var BACKGROUND_COLORS = {
23
27
  TRANSPARENT: 'transparent',
24
28
  BLACK: 'black',
@@ -45,17 +49,18 @@ var ContentArea = function ContentArea(_ref) {
45
49
  disableIndents = _ref.disableIndents,
46
50
  children = _ref.children,
47
51
  className = _ref.className,
48
- classes = _ref.classes;
49
- return /*#__PURE__*/React.createElement("div", {
52
+ classes = _ref.classes,
53
+ dataAttrs = _ref.dataAttrs;
54
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
50
55
  className: cn({
51
56
  'background-color': outerBackgroundColor
52
57
  }, [className, classes === null || classes === void 0 ? void 0 : classes.root])
53
- }, /*#__PURE__*/React.createElement("div", {
58
+ }), /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner), {
54
59
  className: cn('inner', {
55
60
  'disable-indents': disableIndents,
56
61
  'background-color': innerBackgroundColor
57
62
  }, classes === null || classes === void 0 ? void 0 : classes.inner)
58
- }, children));
63
+ }), children));
59
64
  };
60
65
 
61
66
  ContentArea.propTypes = {
@@ -65,6 +70,10 @@ ContentArea.propTypes = {
65
70
  root: PropTypes.string,
66
71
  inner: PropTypes.string
67
72
  }),
73
+ dataAttrs: PropTypes.shape({
74
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
75
+ inner: PropTypes.objectOf(PropTypes.string.isRequired)
76
+ }),
68
77
  outerBackgroundColor: PropTypes.oneOf(Object.values(BACKGROUND_COLORS)),
69
78
  innerBackgroundColor: PropTypes.oneOf(Object.values(BACKGROUND_COLORS))
70
79
  };
@@ -48,7 +48,7 @@ var Counter = function Counter(_ref) {
48
48
  _ref$isControlled = _ref.isControlled,
49
49
  isControlled = _ref$isControlled === void 0 ? false : _ref$isControlled,
50
50
  _ref$value = _ref.value,
51
- value = _ref$value === void 0 ? 0 : _ref$value,
51
+ outerValue = _ref$value === void 0 ? 0 : _ref$value,
52
52
  initialValue = _ref.initialValue,
53
53
  _ref$max = _ref.max,
54
54
  max = _ref$max === void 0 ? 999999 : _ref$max,
@@ -64,15 +64,16 @@ var Counter = function Counter(_ref) {
64
64
 
65
65
  var _React$useState = React.useState(currentInitialValue),
66
66
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
67
- counter = _React$useState2[0],
68
- setCounter = _React$useState2[1];
67
+ innerValue = _React$useState2[0],
68
+ setInnerValue = _React$useState2[1];
69
69
 
70
+ var currentValue = isControlled ? outerValue : innerValue;
70
71
  React.useEffect(function () {
71
- setCounter(currentInitialValue);
72
+ setInnerValue(currentInitialValue);
72
73
  }, [currentInitialValue]);
73
74
  var handleValueChange = React.useCallback(function (inputValue) {
74
75
  if (!isControlled) {
75
- setCounter(inputValue);
76
+ setInnerValue(inputValue);
76
77
  }
77
78
 
78
79
  if (inputValue < min) {
@@ -88,11 +89,11 @@ var Counter = function Counter(_ref) {
88
89
  }
89
90
  }, [min, max, onChange, isControlled]);
90
91
  var handleMinusClick = React.useCallback(function () {
91
- handleValueChange(isControlled ? value - 1 : counter - 1);
92
- }, [handleValueChange, counter, isControlled, value]);
92
+ handleValueChange(currentValue - 1);
93
+ }, [handleValueChange, currentValue]);
93
94
  var handlePlusClick = React.useCallback(function () {
94
- handleValueChange(isControlled ? value + 1 : counter + 1);
95
- }, [handleValueChange, counter, isControlled, value]);
95
+ handleValueChange(currentValue + 1);
96
+ }, [handleValueChange, currentValue]);
96
97
  var handleInputChange = React.useCallback(function (e) {
97
98
  var pattern = /^[0-9\b]+$/;
98
99
  var inputValue = e.target.value;
@@ -125,7 +126,7 @@ var Counter = function Counter(_ref) {
125
126
  left: true
126
127
  }, classes.buttonMinus),
127
128
  type: "button",
128
- disabled: disabled || (isControlled ? value : counter) <= min,
129
+ disabled: disabled || currentValue <= min,
129
130
  onClick: handleMinusClick
130
131
  }), /*#__PURE__*/React.createElement(IconMinus, {
131
132
  className: cn('icon')
@@ -133,7 +134,7 @@ var Counter = function Counter(_ref) {
133
134
  className: cn('input-box')
134
135
  }, /*#__PURE__*/React.createElement("input", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
135
136
  className: cn('input', classes.input),
136
- value: isControlled ? value : counter,
137
+ value: currentValue,
137
138
  onChange: handleInputChange,
138
139
  onBlur: handleInputBlur,
139
140
  disabled: disabled
@@ -142,7 +143,7 @@ var Counter = function Counter(_ref) {
142
143
  right: true
143
144
  }, classes.buttonPlus),
144
145
  type: "button",
145
- disabled: disabled || counter >= max || value >= max,
146
+ disabled: disabled || currentValue >= max,
146
147
  onClick: handlePlusClick
147
148
  }), /*#__PURE__*/React.createElement(IconPlus, {
148
149
  className: cn('icon')
@@ -14,6 +14,11 @@ export interface IGridProps {
14
14
  multiRow?: boolean;
15
15
  /** Дополнительный класс корневого элемента */
16
16
  className?: string;
17
+ /** Дополнительные data атрибуты к внутренним элементам */
18
+ dataAttrs?: {
19
+ root?: Record<string, string>;
20
+ container?: Record<string, string>;
21
+ };
17
22
  children: Array<React.ReactElement<IGridColumn>> | React.ReactElement<IGridColumn>;
18
23
  }
19
24
  declare const Grid: React.FC<IGridProps>;
@@ -9,6 +9,8 @@ exports["default"] = void 0;
9
9
 
10
10
  require("core-js/modules/es.array.map");
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
12
14
  var React = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _uiHelpers = require("@megafon/ui-helpers");
@@ -19,6 +21,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
19
21
 
20
22
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
23
 
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
+
22
26
  var cn = (0, _uiHelpers.cnCreate)('mfui-grid');
23
27
 
24
28
  var Grid = function Grid(_ref) {
@@ -29,10 +33,11 @@ var Grid = function Grid(_ref) {
29
33
  multiRow = _ref$multiRow === void 0 ? true : _ref$multiRow,
30
34
  hAlign = _ref.hAlign,
31
35
  vAlign = _ref.vAlign,
32
- className = _ref.className;
33
- return /*#__PURE__*/React.createElement("div", {
36
+ className = _ref.className,
37
+ dataAttrs = _ref.dataAttrs;
38
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
34
39
  className: cn([className])
35
- }, /*#__PURE__*/React.createElement("div", {
40
+ }), /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.container), {
36
41
  className: cn('container', {
37
42
  'multi-row': multiRow,
38
43
  'h-align': hAlign,
@@ -40,7 +45,7 @@ var Grid = function Grid(_ref) {
40
45
  'gutters-left': guttersLeft,
41
46
  'gutters-bottom': guttersBottom
42
47
  })
43
- }, React.Children.map(children, function (child) {
48
+ }), React.Children.map(children, function (child) {
44
49
  return React.cloneElement(child, {
45
50
  className: cn('column', {
46
51
  'gutter-left': guttersLeft,
@@ -57,6 +62,10 @@ Grid.propTypes = {
57
62
  guttersBottom: PropTypes.oneOf(['large', 'medium']),
58
63
  multiRow: PropTypes.bool,
59
64
  className: PropTypes.string,
65
+ dataAttrs: PropTypes.shape({
66
+ root: PropTypes.objectOf(PropTypes.string.isRequired),
67
+ container: PropTypes.objectOf(PropTypes.string.isRequired)
68
+ }),
60
69
  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element.isRequired), PropTypes.element.isRequired]).isRequired
61
70
  };
62
71
  var _default = Grid;
@@ -50,6 +50,10 @@ export interface IGridColumn {
50
50
  flex?: boolean;
51
51
  /** Дополнительный класс корневого элемента */
52
52
  className?: string;
53
+ /** Дополнительные data атрибуты к внутренним элементам */
54
+ dataAttrs?: {
55
+ root?: Record<string, string>;
56
+ };
53
57
  children: React.ReactNode;
54
58
  }
55
59
  declare const GridColumn: React.FC<IGridColumn>;
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var React = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _uiHelpers = require("@megafon/ui-helpers");
@@ -17,6 +19,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
17
19
 
18
20
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
19
21
 
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
20
24
  var GridSizeValues = PropTypes.oneOf(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']);
21
25
  var cn = (0, _uiHelpers.cnCreate)('mfui-grid-column');
22
26
 
@@ -53,8 +57,9 @@ var GridColumn = function GridColumn(_ref) {
53
57
  _ref$grow = _ref.grow,
54
58
  grow = _ref$grow === void 0 ? false : _ref$grow,
55
59
  align = _ref.align,
60
+ dataAttrs = _ref.dataAttrs,
56
61
  children = _ref.children;
57
- return /*#__PURE__*/React.createElement("div", {
62
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
58
63
  className: cn({
59
64
  flex: flex,
60
65
  grow: grow,
@@ -80,7 +85,7 @@ var GridColumn = function GridColumn(_ref) {
80
85
  'right-offset-tablet': rightOffsetTablet,
81
86
  'right-offset-mobile': rightOffsetMobile
82
87
  }, className)
83
- }, children);
88
+ }), children);
84
89
  };
85
90
 
86
91
  GridColumn.propTypes = {
@@ -103,6 +108,9 @@ GridColumn.propTypes = {
103
108
  grow: PropTypes.bool,
104
109
  flex: PropTypes.bool,
105
110
  className: PropTypes.string,
111
+ dataAttrs: PropTypes.shape({
112
+ root: PropTypes.objectOf(PropTypes.string.isRequired)
113
+ }),
106
114
  children: PropTypes.node.isRequired
107
115
  };
108
116
  var _default = GridColumn;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import './Header.less';
3
- interface IHeaderProps {
3
+ export interface IHeaderProps {
4
4
  /** Тег */
5
5
  as?: 'h1' | 'h2' | 'h3' | 'h5';
6
6
  /** Поведение текста при встраивании в широкий или узкий контейнер (только для h5) */
@@ -4,13 +4,17 @@ export interface ILogoProps {
4
4
  /** Дополнительный класс корневого элемента */
5
5
  className?: string;
6
6
  /** Цвет */
7
- color?: string;
7
+ color?: 'green';
8
8
  /** Отображение */
9
9
  view?: 'horizontal' | 'vertical';
10
10
  /** Ссылка */
11
11
  href?: string;
12
12
  /** target - аргумент тега <a> */
13
13
  target?: '_self' | '_blank' | '_parent' | '_top';
14
+ /** Дополнительные data атрибуты к внутренним элементам */
15
+ dataAttrs?: {
16
+ root?: Record<string, string>;
17
+ };
14
18
  }
15
19
  declare const Logo: React.FC<ILogoProps>;
16
20
  export default Logo;