@megafon/ui-core 3.12.0 → 4.0.0-beta.10

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 (80) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/es/colors/Colors.css +4 -0
  3. package/dist/es/components/Accordion/Accordion.css +59 -22
  4. package/dist/es/components/Accordion/Accordion.js +12 -17
  5. package/dist/es/components/Badges/components/PriceBadge/PriceBadge.css +1 -1
  6. package/dist/es/components/Badges/components/PromoBadge/PromoBadge.css +1 -1
  7. package/dist/es/components/Badges/components/TimerBadge/TimerBadge.css +1 -1
  8. package/dist/es/components/Button/Button.css +5 -5
  9. package/dist/es/components/Calendar/components/Day/Day.css +1 -1
  10. package/dist/es/components/Calendar/components/Month/Month.css +1 -1
  11. package/dist/es/components/Caption/Caption.css +48 -0
  12. package/dist/es/components/Caption/Caption.d.ts +31 -0
  13. package/dist/es/components/Caption/Caption.js +51 -0
  14. package/dist/es/components/Header/Header.css +3 -0
  15. package/dist/es/components/Header/Header.d.ts +2 -0
  16. package/dist/es/components/Header/Header.js +7 -1
  17. package/dist/es/components/Notification/Notification.css +9 -5
  18. package/dist/es/components/Notification/Notification.js +2 -7
  19. package/dist/es/components/Paragraph/Paragraph.css +8 -5
  20. package/dist/es/components/Paragraph/Paragraph.d.ts +4 -3
  21. package/dist/es/components/Paragraph/Paragraph.js +6 -5
  22. package/dist/es/components/RadioButton/RadioButton.css +1 -1
  23. package/dist/es/components/Search/Search.css +129 -9
  24. package/dist/es/components/Search/Search.d.ts +2 -0
  25. package/dist/es/components/Search/Search.js +20 -7
  26. package/dist/es/components/Select/Select.css +165 -30
  27. package/dist/es/components/Select/Select.js +25 -18
  28. package/dist/es/components/Switcher/Switcher.css +1 -1
  29. package/dist/es/components/Tabs/Tabs.css +140 -143
  30. package/dist/es/components/Tabs/Tabs.d.ts +9 -8
  31. package/dist/es/components/Tabs/Tabs.js +14 -18
  32. package/dist/es/components/TextField/TextField.css +221 -92
  33. package/dist/es/components/TextField/TextField.js +161 -71
  34. package/dist/es/constants/throttleTime.d.ts +1 -0
  35. package/dist/es/constants/throttleTime.js +2 -1
  36. package/dist/es/index.d.ts +1 -1
  37. package/dist/es/index.js +1 -1
  38. package/dist/lib/colors/Colors.css +4 -0
  39. package/dist/lib/components/Accordion/Accordion.css +59 -22
  40. package/dist/lib/components/Accordion/Accordion.js +12 -17
  41. package/dist/lib/components/Badges/components/PriceBadge/PriceBadge.css +1 -1
  42. package/dist/lib/components/Badges/components/PromoBadge/PromoBadge.css +1 -1
  43. package/dist/lib/components/Badges/components/TimerBadge/TimerBadge.css +1 -1
  44. package/dist/lib/components/Button/Button.css +5 -5
  45. package/dist/lib/components/Calendar/components/Day/Day.css +1 -1
  46. package/dist/lib/components/Calendar/components/Month/Month.css +1 -1
  47. package/dist/lib/components/Caption/Caption.css +48 -0
  48. package/dist/lib/components/Caption/Caption.d.ts +31 -0
  49. package/dist/lib/components/{InputLabel/InputLabel.js → Caption/Caption.js} +38 -10
  50. package/dist/lib/components/Header/Header.css +3 -0
  51. package/dist/lib/components/Header/Header.d.ts +2 -0
  52. package/dist/lib/components/Header/Header.js +7 -1
  53. package/dist/lib/components/Notification/Notification.css +9 -5
  54. package/dist/lib/components/Notification/Notification.js +2 -8
  55. package/dist/lib/components/Paragraph/Paragraph.css +8 -5
  56. package/dist/lib/components/Paragraph/Paragraph.d.ts +4 -3
  57. package/dist/lib/components/Paragraph/Paragraph.js +6 -5
  58. package/dist/lib/components/RadioButton/RadioButton.css +1 -1
  59. package/dist/lib/components/Search/Search.css +129 -9
  60. package/dist/lib/components/Search/Search.d.ts +2 -0
  61. package/dist/lib/components/Search/Search.js +20 -8
  62. package/dist/lib/components/Select/Select.css +165 -30
  63. package/dist/lib/components/Select/Select.js +25 -19
  64. package/dist/lib/components/Switcher/Switcher.css +1 -1
  65. package/dist/lib/components/Tabs/Tabs.css +140 -143
  66. package/dist/lib/components/Tabs/Tabs.d.ts +9 -8
  67. package/dist/lib/components/Tabs/Tabs.js +16 -20
  68. package/dist/lib/components/TextField/TextField.css +221 -92
  69. package/dist/lib/components/TextField/TextField.js +164 -71
  70. package/dist/lib/constants/throttleTime.d.ts +1 -0
  71. package/dist/lib/constants/throttleTime.js +2 -1
  72. package/dist/lib/index.d.ts +1 -1
  73. package/dist/lib/index.js +8 -8
  74. package/package.json +3 -3
  75. package/styles/base.less +4 -1
  76. package/dist/es/components/InputLabel/InputLabel.css +0 -5
  77. package/dist/es/components/InputLabel/InputLabel.d.ts +0 -10
  78. package/dist/es/components/InputLabel/InputLabel.js +0 -24
  79. package/dist/lib/components/InputLabel/InputLabel.css +0 -5
  80. package/dist/lib/components/InputLabel/InputLabel.d.ts +0 -10
@@ -17,7 +17,6 @@ import { Fragment, useEffect, useReducer, useCallback } from 'react';
17
17
  import { cnCreate, detectTouch, filterDataAttrs } from '@megafon/ui-helpers';
18
18
  import debounce from 'lodash.debounce';
19
19
  import * as PropTypes from 'prop-types';
20
- import InputLabel from "../InputLabel/InputLabel";
21
20
  import "./Select.css";
22
21
  import selectReducer, { initialState, SelectActions } from "./reducer/selectReducer";
23
22
  var UPDATE_ITEMS_LIST = SelectActions.UPDATE_ITEMS_LIST,
@@ -325,6 +324,15 @@ var Select = function Select(_ref) {
325
324
  !filterValue && node && itemsNodeList.current.push(node);
326
325
  }, [filterValue]);
327
326
 
327
+ var renderLabel = function renderLabel() {
328
+ return /*#__PURE__*/React.createElement("label", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.label), {
329
+ htmlFor: labelId,
330
+ className: cn('label')
331
+ }), label, required && /*#__PURE__*/React.createElement("span", {
332
+ className: cn('require-mark')
333
+ }, "*"));
334
+ };
335
+
328
336
  var renderTitle = function renderTitle() {
329
337
  var item = items.find(function (elem) {
330
338
  return elem.value === currentValue;
@@ -336,26 +344,30 @@ var Select = function Select(_ref) {
336
344
  }
337
345
 
338
346
  return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title), {
339
- className: cn('title', {
340
- placeholder: !!placeholder && currentValue === undefined
341
- }, [classes === null || classes === void 0 ? void 0 : classes.title]),
347
+ className: cn('title', [classes === null || classes === void 0 ? void 0 : classes.title]),
342
348
  role: "button",
343
349
  tabIndex: 0,
344
350
  onClick: handleSelectClick
345
351
  }), /*#__PURE__*/React.createElement("div", {
346
- className: cn('title-inner', [classes === null || classes === void 0 ? void 0 : classes.titleInner])
347
- }, inputTitle));
352
+ className: cn('title-inner', {
353
+ placeholder: currentValue === undefined
354
+ }, [classes === null || classes === void 0 ? void 0 : classes.titleInner])
355
+ }, /*#__PURE__*/React.createElement("div", {
356
+ className: cn('title-value')
357
+ }, inputTitle), label && renderLabel()));
348
358
  };
349
359
 
350
360
  var renderCombobox = function renderCombobox() {
351
- return /*#__PURE__*/React.createElement("input", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
352
- className: cn('combobox'),
361
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("input", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
362
+ className: cn('combobox', {
363
+ placeholder: inputValue === undefined
364
+ }),
353
365
  onFocus: handleComboboxFocus,
354
366
  onChange: handleChangeCombobox,
355
367
  type: "text",
356
368
  value: inputValue,
357
369
  placeholder: placeholder
358
- }));
370
+ })), label && renderLabel());
359
371
  };
360
372
 
361
373
  var renderChildren = function renderChildren() {
@@ -399,15 +411,10 @@ var Select = function Select(_ref) {
399
411
  ref: selectNode
400
412
  }), /*#__PURE__*/React.createElement("div", {
401
413
  className: cn('inner')
402
- }, label && /*#__PURE__*/React.createElement(InputLabel, {
403
- dataAttrs: {
404
- root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.label
405
- },
406
- htmlFor: labelId
407
- }, label, required && /*#__PURE__*/React.createElement("span", {
408
- className: cn('require-mark')
409
- }, "*")), /*#__PURE__*/React.createElement("div", {
410
- className: cn('control', classes.control),
414
+ }, /*#__PURE__*/React.createElement("div", {
415
+ className: cn('control', {
416
+ labeled: !!label
417
+ }, classes.control),
411
418
  onKeyDown: handleKeyDown
412
419
  }, type === SelectTypes.COMBOBOX && renderCombobox(), type === SelectTypes.CLASSIC && renderTitle()), renderChildren()), noticeText && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.noticeText), {
413
420
  className: cn('text', {
@@ -13,7 +13,7 @@
13
13
  }
14
14
  .mfui-switcher__content_size_small {
15
15
  font-size: 12px;
16
- line-height: 16px;
16
+ line-height: 18px;
17
17
  }
18
18
  .mfui-switcher__content_left {
19
19
  margin-right: 12px;
@@ -1,13 +1,28 @@
1
+ .mfui-tabs .swiper-wrapper {
2
+ position: relative;
3
+ z-index: 0;
4
+ display: -webkit-box;
5
+ display: -ms-flexbox;
6
+ display: flex;
7
+ width: 100%;
8
+ }
9
+ .mfui-tabs__swiper-wrapper {
10
+ display: -webkit-box;
11
+ display: -ms-flexbox;
12
+ display: flex;
13
+ }
1
14
  .mfui-tabs__swiper {
2
15
  font-family: inherit;
3
16
  font-size: 15px;
4
17
  line-height: 24px;
5
18
  font-weight: 500;
6
19
  position: relative;
7
- display: -webkit-box;
8
- display: -ms-flexbox;
9
- display: flex;
20
+ display: inline-block;
21
+ width: 100%;
22
+ padding: 4px;
23
+ border-radius: 12px;
10
24
  overflow: hidden;
25
+ background-color: var(--spbSky0);
11
26
  }
12
27
  .mfui-tabs__swiper:before,
13
28
  .mfui-tabs__swiper:after {
@@ -17,17 +32,17 @@
17
32
  bottom: 0;
18
33
  z-index: 1;
19
34
  width: 64px;
35
+ background: -webkit-gradient(linear, right top, left top, from(var(--stcBlack5)), color-stop(64%, transparent));
36
+ background: linear-gradient(270deg, var(--stcBlack5) 0%, transparent 64%);
20
37
  pointer-events: none;
21
38
  }
22
39
  .mfui-tabs__swiper:before {
23
40
  left: 0;
24
- background: -webkit-gradient(linear, left top, right top, from(var(--base)), to(rgba(255, 255, 255, 0)));
25
- background: linear-gradient(to right, var(--base), rgba(255, 255, 255, 0));
41
+ -webkit-transform: matrix(-1, 0, 0, 1, 0, 0);
42
+ transform: matrix(-1, 0, 0, 1, 0, 0);
26
43
  }
27
44
  .mfui-tabs__swiper:after {
28
45
  right: 0;
29
- background: -webkit-gradient(linear, right top, left top, from(var(--base)), to(rgba(255, 255, 255, 0)));
30
- background: linear-gradient(to left, var(--base), rgba(255, 255, 255, 0));
31
46
  }
32
47
  .mfui-tabs__swiper_beginning:before {
33
48
  display: none;
@@ -35,68 +50,11 @@
35
50
  .mfui-tabs__swiper_end:after {
36
51
  display: none;
37
52
  }
38
- .mfui-tabs .swiper-wrapper {
39
- position: relative;
40
- z-index: 0;
41
- display: -webkit-box;
42
- display: -ms-flexbox;
43
- display: flex;
44
- max-width: 100%;
45
- }
46
- @media screen and (max-width: 767px) {
47
- .mfui-tabs .swiper-wrapper {
48
- width: 100%;
49
- }
50
- }
51
53
  .mfui-tabs__slide {
52
54
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
53
- -ms-flex-negative: 0;
54
- flex-shrink: 0;
55
- }
56
- @media screen and (max-width: 767px) {
57
- .mfui-tabs__slide {
58
- -webkit-box-flex: 1;
59
- -ms-flex-positive: 1;
60
- flex-grow: 1;
61
- }
62
- }
63
- .mfui-tabs__tab-inner {
64
- display: -webkit-box;
65
- display: -ms-flexbox;
66
- display: flex;
67
- -webkit-box-align: center;
68
- -ms-flex-align: center;
69
- align-items: center;
70
- -webkit-box-pack: center;
71
- -ms-flex-pack: center;
72
- justify-content: center;
73
- -webkit-box-sizing: content-box;
74
- box-sizing: content-box;
75
- height: 32px;
76
- color: var(--content);
77
- white-space: nowrap;
78
- text-decoration: none;
79
- cursor: pointer;
80
- fill: var(--content);
81
- }
82
- .mfui-tabs__tab-inner:hover {
83
- color: var(--brandGreen);
84
- fill: var(--brandGreen);
85
- }
86
- .mfui-tabs__tab-inner_current {
87
- color: var(--brandGreen);
88
- fill: var(--brandGreen);
89
- }
90
- .mfui-tabs__tab-icon {
91
- width: 32px;
92
- height: 32px;
93
- }
94
- .mfui-tabs__tab-icon:not(:last-child) {
95
- margin-right: 8px;
96
- }
97
- .mfui-tabs__tab-icon svg {
98
- width: 100%;
99
- height: 100%;
55
+ -webkit-box-flex: 1;
56
+ -ms-flex: 1;
57
+ flex: 1;
100
58
  }
101
59
  .mfui-tabs__panel {
102
60
  display: none;
@@ -106,10 +64,14 @@
106
64
  }
107
65
  .mfui-tabs__underline {
108
66
  position: absolute;
67
+ top: 0;
109
68
  bottom: 0;
110
- left: 0;
111
- height: 2px;
112
- background-color: var(--brandGreen);
69
+ left: auto;
70
+ z-index: 0;
71
+ border-radius: 8px;
72
+ background-color: var(--stcWhite);
73
+ -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
74
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
113
75
  -webkit-transition-duration: 0.3s;
114
76
  transition-duration: 0.3s;
115
77
  }
@@ -125,6 +87,11 @@
125
87
  -webkit-transform: translateY(-50%);
126
88
  transform: translateY(-50%);
127
89
  cursor: pointer;
90
+ opacity: 1;
91
+ -webkit-transition-duration: 0.3s;
92
+ transition-duration: 0.3s;
93
+ -webkit-transition-property: background-color, opacity;
94
+ transition-property: background-color, opacity;
128
95
  fill: var(--base);
129
96
  }
130
97
  @media screen and (max-width: 1023px) {
@@ -132,95 +99,129 @@
132
99
  display: none;
133
100
  }
134
101
  }
102
+ .mfui-tabs__arrow:hover {
103
+ background-color: var(--spbSky3);
104
+ }
105
+ .mfui-tabs__arrow:active {
106
+ background-color: var(--buttonDown);
107
+ }
135
108
  .mfui-tabs__arrow_prev {
136
- left: 0;
109
+ left: 14px;
137
110
  }
138
111
  .mfui-tabs__arrow_next {
139
- right: 0;
112
+ right: 14px;
113
+ -webkit-transform: translateY(-50%) rotate(180deg);
114
+ transform: translateY(-50%) rotate(180deg);
140
115
  }
141
116
  .mfui-tabs__arrow_hide {
142
- display: none;
117
+ opacity: 0;
118
+ pointer-events: none;
143
119
  }
144
- .mfui-tabs_size_small .mfui-tabs__slide:not(:last-child) .mfui-tabs__tab {
145
- padding-right: 40px;
120
+ .mfui-tabs__tab-inner {
121
+ font-size: 15px;
122
+ line-height: 24px;
123
+ font-weight: 500;
124
+ position: relative;
125
+ display: -webkit-box;
126
+ display: -ms-flexbox;
127
+ display: flex;
128
+ -webkit-box-align: center;
129
+ -ms-flex-align: center;
130
+ align-items: center;
131
+ -webkit-box-pack: center;
132
+ -ms-flex-pack: center;
133
+ justify-content: center;
134
+ height: 36px;
135
+ padding: 2px 12px;
136
+ color: var(--spbSky3);
137
+ white-space: nowrap;
138
+ text-align: center;
139
+ text-decoration: none;
140
+ cursor: pointer;
141
+ -webkit-transition: color 0.3s;
142
+ transition: color 0.3s;
143
+ fill: var(--spbSky3);
146
144
  }
147
- @media screen and (max-width: 767px) {
148
- .mfui-tabs_size_small .mfui-tabs__slide:not(:last-child) .mfui-tabs__tab {
149
- padding-right: 32px;
150
- }
145
+ .mfui-tabs__tab-inner:focus {
146
+ color: var(--spbSky3);
147
+ fill: var(--spbSky3);
151
148
  }
152
- .mfui-tabs_size_small .mfui-tabs__tab-inner {
153
- -webkit-box-pack: start;
154
- -ms-flex-pack: start;
155
- justify-content: start;
156
- height: 24px;
157
- padding: 7px 0;
149
+ .mfui-tabs__tab-inner:not(.mfui-tabs__tab-inner_current):hover {
150
+ color: var(--content);
151
+ fill: var(--content);
158
152
  }
159
- @media screen and (max-width: 767px) {
160
- .mfui-tabs_size_small .mfui-tabs__tab-inner {
161
- padding: 3px 0;
162
- }
153
+ .mfui-tabs__tab-inner:not(.mfui-tabs__tab-inner_current):active {
154
+ color: var(--buttonDown);
155
+ fill: var(--buttonDown);
163
156
  }
164
- .mfui-tabs_size_small .mfui-tabs__tab-icon {
165
- width: 24px;
166
- height: 24px;
157
+ .mfui-tabs__tab-inner_with-icon {
158
+ padding-left: 8px;
167
159
  }
168
- .mfui-tabs_size_medium .mfui-tabs__tab-inner {
169
- padding: 7px 24px;
160
+ .mfui-tabs__tab-inner_current {
161
+ color: var(--stcBlack);
162
+ cursor: auto;
163
+ fill: var(--stcBlack);
170
164
  }
171
- @media screen and (max-width: 767px) {
172
- .mfui-tabs_size_medium .mfui-tabs__tab-inner {
173
- padding: 3px 16px;
174
- }
165
+ .mfui-tabs__tab-icon {
166
+ width: 32px;
167
+ height: 32px;
168
+ margin-right: 4px;
169
+ }
170
+ .mfui-tabs__tab-icon svg {
171
+ width: 100%;
172
+ height: 100%;
175
173
  }
176
174
  .mfui-tabs_size_large .mfui-tabs__swiper {
177
- font-weight: 500;
178
- font-size: 18px;
179
- line-height: 24px;
180
- letter-spacing: 0.5px;
175
+ padding: 6px;
181
176
  }
182
- @media screen and (min-width: 1280px) {
177
+ @media screen and (min-width: 768px) {
183
178
  .mfui-tabs_size_large .mfui-tabs__swiper {
184
- font-size: 20px;
185
- line-height: 28px;
179
+ padding: 8px;
186
180
  }
187
181
  }
188
182
  .mfui-tabs_size_large .mfui-tabs__tab-inner {
189
- padding: 11px 24px;
183
+ height: 48px;
184
+ padding: 8px 24px;
190
185
  }
191
- @media screen and (max-width: 767px) {
186
+ @media screen and (min-width: 768px) {
192
187
  .mfui-tabs_size_large .mfui-tabs__tab-inner {
193
- padding: 7px 16px;
188
+ height: 56px;
189
+ padding: 12px 40px;
194
190
  }
195
191
  }
196
- .mfui-tabs_h-align_center .mfui-tabs__swiper {
197
- -webkit-box-pack: center;
198
- -ms-flex-pack: center;
199
- justify-content: center;
192
+ .mfui-tabs_size_large .mfui-tabs__tab-inner_with-icon {
193
+ padding-left: 20px;
200
194
  }
201
- .mfui-tabs_h-align_center .mfui-tabs__tab {
202
- border-bottom: 1px solid var(--stcWhite);
195
+ @media screen and (min-width: 768px) {
196
+ .mfui-tabs_size_large .mfui-tabs__tab-inner_with-icon {
197
+ padding-left: 28px;
198
+ }
203
199
  }
204
- .mfui-tabs_h-align_left .mfui-tabs__swiper-wrapper {
205
- position: relative;
200
+ .mfui-tabs_size_large .mfui-tabs__tab-icon {
201
+ margin-right: 6px;
206
202
  }
207
- .mfui-tabs_h-align_left .mfui-tabs__swiper-wrapper:before {
208
- content: '';
209
- position: absolute;
210
- bottom: 0;
211
- left: 0;
212
- width: 100%;
213
- height: 1px;
214
- background-color: var(--spbSky2);
203
+ .mfui-tabs_auto-width .mfui-tabs__swiper {
204
+ width: auto;
205
+ max-width: 100%;
206
+ }
207
+ .mfui-tabs_auto-width .mfui-tabs__slide {
208
+ -webkit-box-flex: 0;
209
+ -ms-flex: 0 0 auto;
210
+ flex: 0 0 auto;
211
+ }
212
+ .mfui-tabs_auto-width.mfui-tabs_h-align_center .mfui-tabs__swiper-wrapper {
213
+ -webkit-box-pack: center;
214
+ -ms-flex-pack: center;
215
+ justify-content: center;
215
216
  }
216
217
  @media screen and (min-width: 768px) and (max-width: 1023px) {
217
- .mfui-tabs_indents .mfui-tabs__swiper {
218
+ .mfui-tabs_indents .mfui-tabs__swiper-wrapper {
218
219
  margin: 0 -48px;
219
220
  padding: 0 48px;
220
221
  }
221
222
  }
222
223
  @media screen and (max-width: 767px) {
223
- .mfui-tabs_indents .mfui-tabs__swiper {
224
+ .mfui-tabs_indents .mfui-tabs__swiper-wrapper {
224
225
  margin: 0 -16px;
225
226
  padding: 0 16px;
226
227
  }
@@ -233,35 +234,31 @@
233
234
  z-index: 100;
234
235
  background-color: var(--base);
235
236
  }
236
- .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__swiper:before {
237
- left: 0;
238
- background: -webkit-gradient(linear, left top, right top, from(var(--brandGreen)), to(transparent));
239
- background: linear-gradient(to right, var(--brandGreen), transparent);
240
- }
241
- .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__swiper:after {
242
- right: 0;
243
- background: -webkit-gradient(linear, right top, left top, from(var(--brandGreen)), to(transparent));
244
- background: linear-gradient(to left, var(--brandGreen), transparent);
245
- }
246
- .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab {
247
- border-color: var(--stcBlack5);
237
+ .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__swiper {
238
+ background-color: var(--stcBlack50);
248
239
  }
249
- .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner {
240
+ .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner:not(.mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner_current) {
250
241
  color: var(--stcWhite50);
251
242
  fill: var(--stcWhite50);
252
243
  }
253
- .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner:hover {
244
+ .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner:not(.mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner_current):hover {
254
245
  color: var(--stcWhite);
255
246
  fill: var(--stcWhite);
256
247
  }
257
248
  .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__tab-inner_current {
258
- color: var(--stcWhite);
259
- fill: var(--stcWhite);
249
+ color: var(--stcBlack);
250
+ fill: var(--stcBlack);
260
251
  }
261
252
  .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__underline {
262
253
  background-color: var(--stcWhite);
263
254
  }
264
255
  .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__arrow {
265
256
  background-color: var(--stcWhite);
266
- fill: var(--brandGreen);
257
+ fill: var(--stcBlack);
258
+ }
259
+ .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__arrow:hover {
260
+ background-color: var(--stcWhite50);
261
+ }
262
+ .mfui-tabs_tab-color_green:not(.mfui-tabs_sticky) .mfui-tabs__arrow:active {
263
+ background-color: var(--stcBlack0);
267
264
  }
@@ -1,22 +1,21 @@
1
1
  import * as React from 'react';
2
2
  import './Tabs.less';
3
3
  import { ITabProps } from './Tab';
4
- export declare const TabSize: {
5
- readonly SMALL: "small";
6
- readonly MEDIUM: "medium";
7
- readonly LARGE: "large";
8
- };
9
4
  export declare const TabHAlign: {
10
5
  readonly LEFT: "left";
11
6
  readonly CENTER: "center";
12
7
  };
8
+ export declare const TabSize: {
9
+ readonly MEDIUM: "medium";
10
+ readonly LARGE: "large";
11
+ };
13
12
  export declare const TabColorTheme: {
14
13
  readonly WHITE: "white";
15
14
  readonly GREEN: "green";
16
15
  };
17
16
  declare type TabSizeType = typeof TabSize[keyof typeof TabSize];
18
- declare type TabHAlignType = typeof TabHAlign[keyof typeof TabHAlign];
19
17
  declare type TabColorThemeType = typeof TabColorTheme[keyof typeof TabColorTheme];
18
+ declare type TabHAlignType = typeof TabHAlign[keyof typeof TabHAlign];
20
19
  export interface ITabsProps {
21
20
  /** Дополнительный класс для корневого элемента */
22
21
  className?: string;
@@ -37,10 +36,12 @@ export interface ITabsProps {
37
36
  };
38
37
  /** Размер табов */
39
38
  size?: TabSizeType;
40
- /** Горизонтальное выравнивание */
41
- hAlign?: TabHAlignType;
42
39
  /** Цветовая тема табов для определенных фонов */
43
40
  tabColorTheme?: TabColorThemeType;
41
+ /** Ширина табов по размеру содержимого */
42
+ autoWidth?: boolean;
43
+ /** Горизонтальное выравнивание (только для autoWidth = true) */
44
+ hAlign?: TabHAlignType;
44
45
  /** Фиксация табов у верхней границы окна */
45
46
  sticky?: boolean;
46
47
  /** Индекс активного таба (включает режим управления табами снаружи) */
@@ -22,23 +22,14 @@ var ArrowLeft = function ArrowLeft(props) {
22
22
  }));
23
23
  };
24
24
 
25
- var ArrowRight = function ArrowRight(props) {
26
- return /*#__PURE__*/React.createElement("svg", _extends({
27
- viewBox: "0 0 20 20"
28
- }, props), /*#__PURE__*/React.createElement("path", {
29
- d: "M8 13l3-3-3-3 1-1 4 4-4 4z"
30
- }));
25
+ export var TabHAlign = {
26
+ LEFT: 'left',
27
+ CENTER: 'center'
31
28
  };
32
-
33
29
  export var TabSize = {
34
- SMALL: 'small',
35
30
  MEDIUM: 'medium',
36
31
  LARGE: 'large'
37
32
  };
38
- export var TabHAlign = {
39
- LEFT: 'left',
40
- CENTER: 'center'
41
- };
42
33
  export var TabColorTheme = {
43
34
  WHITE: 'white',
44
35
  GREEN: 'green'
@@ -55,17 +46,19 @@ var Tabs = function Tabs(_ref) {
55
46
  activeTabClass = _ref$classes.activeTab,
56
47
  _ref$size = _ref.size,
57
48
  size = _ref$size === void 0 ? 'medium' : _ref$size,
58
- _ref$hAlign = _ref.hAlign,
59
- hAlign = _ref$hAlign === void 0 ? 'left' : _ref$hAlign,
60
49
  _ref$tabColorTheme = _ref.tabColorTheme,
61
50
  tabColorTheme = _ref$tabColorTheme === void 0 ? 'white' : _ref$tabColorTheme,
62
51
  _ref$sticky = _ref.sticky,
63
52
  sticky = _ref$sticky === void 0 ? false : _ref$sticky,
53
+ _ref$hAlign = _ref.hAlign,
54
+ hAlign = _ref$hAlign === void 0 ? 'left' : _ref$hAlign,
64
55
  _ref$defaultIndex = _ref.defaultIndex,
65
56
  defaultIndex = _ref$defaultIndex === void 0 ? 0 : _ref$defaultIndex,
66
57
  outerIndex = _ref.currentIndex,
67
58
  _ref$renderOnlyCurren = _ref.renderOnlyCurrentPanel,
68
59
  renderOnlyCurrentPanel = _ref$renderOnlyCurren === void 0 ? false : _ref$renderOnlyCurren,
60
+ _ref$autoWidth = _ref.autoWidth,
61
+ autoWidth = _ref$autoWidth === void 0 ? false : _ref$autoWidth,
69
62
  children = _ref.children,
70
63
  dataAttrs = _ref.dataAttrs,
71
64
  onTabClick = _ref.onTabClick,
@@ -275,7 +268,8 @@ var Tabs = function Tabs(_ref) {
275
268
  return /*#__PURE__*/React.createElement(ElementType, _extends({
276
269
  href: href,
277
270
  className: cn('tab-inner', {
278
- current: currentIndex === index
271
+ current: currentIndex === index,
272
+ 'with-icon': !!icon
279
273
  }),
280
274
  onClick: handleTabInnerClick(index)
281
275
  }, filterDataAttrs(attr, index + 1)), !!icon && /*#__PURE__*/React.createElement("div", {
@@ -368,10 +362,11 @@ var Tabs = function Tabs(_ref) {
368
362
  return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
369
363
  className: cn({
370
364
  size: size,
371
- 'h-align': hAlign,
372
365
  'tab-color': tabColorTheme,
366
+ 'h-align': hAlign,
373
367
  indents: !innerIndentsClass,
374
- sticky: isSticky
368
+ sticky: isSticky,
369
+ 'auto-width': autoWidth
375
370
  }, [className, rootClass]),
376
371
  ref: rootRef
377
372
  }), /*#__PURE__*/React.createElement("div", {
@@ -411,7 +406,7 @@ var Tabs = function Tabs(_ref) {
411
406
  hide: isBeginning
412
407
  }),
413
408
  onClick: handlePrevArrowClick
414
- })), /*#__PURE__*/React.createElement(ArrowRight, _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.next), {
409
+ })), /*#__PURE__*/React.createElement(ArrowLeft, _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.next), {
415
410
  className: cn('arrow', {
416
411
  next: true,
417
412
  hide: isEnd
@@ -437,6 +432,7 @@ Tabs.propTypes = {
437
432
  }),
438
433
  size: PropTypes.oneOf(Object.values(TabSize)),
439
434
  hAlign: PropTypes.oneOf(Object.values(TabHAlign)),
435
+ autoWidth: PropTypes.bool,
440
436
  tabColorTheme: PropTypes.oneOf(Object.values(TabColorTheme)),
441
437
  sticky: PropTypes.bool,
442
438
  currentIndex: PropTypes.number,