@megafon/ui-core 5.7.1 → 5.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.
Files changed (116) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/es/components/{Chip → Chips}/Chip.css +53 -32
  3. package/dist/es/components/Chips/Chip.d.ts +74 -0
  4. package/dist/es/components/{Chip → Chips}/Chip.js +45 -6
  5. package/dist/es/components/Chips/Chips.css +19 -0
  6. package/dist/es/components/Chips/Chips.d.ts +27 -0
  7. package/dist/es/components/Chips/Chips.js +129 -0
  8. package/dist/es/components/Chips/components/ChipsDropdown.css +106 -0
  9. package/dist/es/components/Chips/components/ChipsDropdown.d.ts +16 -0
  10. package/dist/es/components/Chips/components/ChipsDropdown.js +101 -0
  11. package/dist/es/components/ContentView/ContentView.css +61 -0
  12. package/dist/es/components/ContentView/ContentView.d.ts +49 -0
  13. package/dist/es/components/ContentView/ContentView.js +103 -0
  14. package/dist/es/components/ContentView/i/alarm.png +0 -0
  15. package/dist/es/components/ContentView/i/empty.png +0 -0
  16. package/dist/es/components/ContentView/i/error.png +0 -0
  17. package/dist/es/components/ContentView/i/fail.png +0 -0
  18. package/dist/es/components/ContentView/i/searchNoResult.png +0 -0
  19. package/dist/es/components/ContentView/i/submit.png +0 -0
  20. package/dist/es/components/ContentView/i/success.png +0 -0
  21. package/dist/es/components/ContentView/i/update.png +0 -0
  22. package/dist/es/components/ContentView/i/waiting.png +0 -0
  23. package/dist/es/components/Search/Search.d.ts +2 -0
  24. package/dist/es/components/Search/Search.js +7 -2
  25. package/dist/es/components/Sliders/Slider/Slider.css +127 -0
  26. package/dist/es/components/Sliders/Slider/Slider.d.ts +41 -0
  27. package/dist/es/components/Sliders/Slider/Slider.js +126 -0
  28. package/dist/es/components/Sliders/SliderRange/SliderRange.css +154 -0
  29. package/dist/es/components/Sliders/SliderRange/SliderRange.d.ts +49 -0
  30. package/dist/es/components/Sliders/SliderRange/SliderRange.js +227 -0
  31. package/dist/es/components/Sliders/SliderRange/helpers.d.ts +6 -0
  32. package/dist/es/components/Sliders/SliderRange/helpers.js +31 -0
  33. package/dist/es/components/Sliders/SliderRatio/SliderRatio.css +209 -0
  34. package/dist/es/components/Sliders/SliderRatio/SliderRatio.d.ts +42 -0
  35. package/dist/es/components/Sliders/SliderRatio/SliderRatio.js +206 -0
  36. package/dist/es/components/Sliders/SliderRatio/helpers.d.ts +15 -0
  37. package/dist/es/components/Sliders/SliderRatio/helpers.js +32 -0
  38. package/dist/es/components/Sliders/SliderRatio/i/thumb.png +0 -0
  39. package/dist/es/components/Sliders/SliderRatio/types.d.ts +8 -0
  40. package/dist/es/components/Sliders/SliderRatio/types.js +6 -0
  41. package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.css +83 -0
  42. package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.d.ts +23 -0
  43. package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.js +82 -0
  44. package/dist/es/components/Sliders/components/SliderScale/SliderScale.css +15 -0
  45. package/dist/es/components/Sliders/components/SliderScale/SliderScale.d.ts +19 -0
  46. package/dist/es/components/Sliders/components/SliderScale/SliderScale.js +51 -0
  47. package/dist/es/components/Sliders/components/SliderScale/helpers.d.ts +2 -0
  48. package/dist/es/components/Sliders/components/SliderScale/helpers.js +39 -0
  49. package/dist/es/components/Sliders/helpers.d.ts +2 -0
  50. package/dist/es/components/Sliders/helpers.js +33 -0
  51. package/dist/es/components/Switcher/Switcher.css +13 -0
  52. package/dist/es/components/Switcher/Switcher.d.ts +3 -1
  53. package/dist/es/components/Switcher/Switcher.js +5 -1
  54. package/dist/es/components/Tabs/Tabs.css +11 -3
  55. package/dist/es/components/TextField/i/textarea-resizer.svg +1 -0
  56. package/dist/es/index.d.ts +9 -2
  57. package/dist/es/index.js +9 -2
  58. package/dist/lib/components/{Chip → Chips}/Chip.css +53 -32
  59. package/dist/lib/components/Chips/Chip.d.ts +74 -0
  60. package/dist/lib/components/{Chip → Chips}/Chip.js +49 -7
  61. package/dist/lib/components/Chips/Chips.css +19 -0
  62. package/dist/lib/components/Chips/Chips.d.ts +27 -0
  63. package/dist/lib/components/Chips/Chips.js +159 -0
  64. package/dist/lib/components/Chips/components/ChipsDropdown.css +106 -0
  65. package/dist/lib/components/Chips/components/ChipsDropdown.d.ts +16 -0
  66. package/dist/lib/components/Chips/components/ChipsDropdown.js +131 -0
  67. package/dist/lib/components/ContentView/ContentView.css +61 -0
  68. package/dist/lib/components/ContentView/ContentView.d.ts +49 -0
  69. package/dist/lib/components/ContentView/ContentView.js +133 -0
  70. package/dist/lib/components/ContentView/i/alarm.png +0 -0
  71. package/dist/lib/components/ContentView/i/empty.png +0 -0
  72. package/dist/lib/components/ContentView/i/error.png +0 -0
  73. package/dist/lib/components/ContentView/i/fail.png +0 -0
  74. package/dist/lib/components/ContentView/i/searchNoResult.png +0 -0
  75. package/dist/lib/components/ContentView/i/submit.png +0 -0
  76. package/dist/lib/components/ContentView/i/success.png +0 -0
  77. package/dist/lib/components/ContentView/i/update.png +0 -0
  78. package/dist/lib/components/ContentView/i/waiting.png +0 -0
  79. package/dist/lib/components/Search/Search.d.ts +2 -0
  80. package/dist/lib/components/Search/Search.js +7 -2
  81. package/dist/lib/components/Sliders/Slider/Slider.css +127 -0
  82. package/dist/lib/components/Sliders/Slider/Slider.d.ts +41 -0
  83. package/dist/lib/components/Sliders/Slider/Slider.js +150 -0
  84. package/dist/lib/components/Sliders/SliderRange/SliderRange.css +154 -0
  85. package/dist/lib/components/Sliders/SliderRange/SliderRange.d.ts +49 -0
  86. package/dist/lib/components/Sliders/SliderRange/SliderRange.js +252 -0
  87. package/dist/lib/components/Sliders/SliderRange/helpers.d.ts +6 -0
  88. package/dist/lib/components/Sliders/SliderRange/helpers.js +48 -0
  89. package/dist/lib/components/Sliders/SliderRatio/SliderRatio.css +209 -0
  90. package/dist/lib/components/Sliders/SliderRatio/SliderRatio.d.ts +42 -0
  91. package/dist/lib/components/Sliders/SliderRatio/SliderRatio.js +237 -0
  92. package/dist/lib/components/Sliders/SliderRatio/helpers.d.ts +15 -0
  93. package/dist/lib/components/Sliders/SliderRatio/helpers.js +58 -0
  94. package/dist/lib/components/Sliders/SliderRatio/i/thumb.png +0 -0
  95. package/dist/lib/components/Sliders/SliderRatio/types.d.ts +8 -0
  96. package/dist/lib/components/Sliders/SliderRatio/types.js +13 -0
  97. package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.css +83 -0
  98. package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.d.ts +23 -0
  99. package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.js +104 -0
  100. package/dist/lib/components/Sliders/components/SliderScale/SliderScale.css +15 -0
  101. package/dist/lib/components/Sliders/components/SliderScale/SliderScale.d.ts +19 -0
  102. package/dist/lib/components/Sliders/components/SliderScale/SliderScale.js +74 -0
  103. package/dist/lib/components/Sliders/components/SliderScale/helpers.d.ts +2 -0
  104. package/dist/lib/components/Sliders/components/SliderScale/helpers.js +60 -0
  105. package/dist/lib/components/Sliders/helpers.d.ts +2 -0
  106. package/dist/lib/components/Sliders/helpers.js +47 -0
  107. package/dist/lib/components/Switcher/Switcher.css +13 -0
  108. package/dist/lib/components/Switcher/Switcher.d.ts +3 -1
  109. package/dist/lib/components/Switcher/Switcher.js +5 -1
  110. package/dist/lib/components/Tabs/Tabs.css +11 -3
  111. package/dist/lib/components/TextField/i/textarea-resizer.svg +1 -0
  112. package/dist/lib/index.d.ts +9 -2
  113. package/dist/lib/index.js +65 -9
  114. package/package.json +5 -4
  115. package/dist/es/components/Chip/Chip.d.ts +0 -36
  116. package/dist/lib/components/Chip/Chip.d.ts +0 -36
@@ -145,3 +145,16 @@
145
145
  .mfui-switcher_disabled .mfui-switcher__content {
146
146
  color: var(--spbSky3);
147
147
  }
148
+ .mfui-switcher_theme_on-gray .mfui-switcher__input:not(.mfui-switcher__input_checked),
149
+ .mfui-switcher_theme_on-gray .mfui-switcher__input_disabled {
150
+ background-color: var(--spbSky2);
151
+ }
152
+ .mfui-switcher_theme_on-gray .mfui-switcher__input:not(.mfui-switcher__input_checked):not(.mfui-switcher__input_disabled):hover {
153
+ background-color: var(--spbSky3);
154
+ }
155
+ .mfui-switcher_theme_on-gray .mfui-switcher__input_disabled .mfui-switcher__pointer {
156
+ background-color: var(--spbSky3);
157
+ }
158
+ .mfui-switcher_theme_on-gray .mfui-switcher__timer-icon {
159
+ fill: var(--spbSky3);
160
+ }
@@ -12,11 +12,13 @@ export interface ISwitcherProps {
12
12
  };
13
13
  /** Дополнительный класс корневого элемента */
14
14
  className?: string;
15
+ /** Тема */
16
+ theme?: 'on-white' | 'on-gray';
15
17
  /** Управление состоянием вкл/выкл компонента */
16
18
  checked?: boolean;
17
19
  /** Состояние ожидание */
18
20
  waiting?: boolean;
19
- /** сот */
21
+ /** Состояние отключения */
20
22
  disabled?: boolean;
21
23
  /** Состояние загрузки */
22
24
  showLoader?: boolean;
@@ -19,6 +19,8 @@ var cn = cnCreate('mfui-switcher');
19
19
  var Switcher = function Switcher(_ref) {
20
20
  var dataAttrs = _ref.dataAttrs,
21
21
  className = _ref.className,
22
+ _ref$theme = _ref.theme,
23
+ theme = _ref$theme === void 0 ? 'on-white' : _ref$theme,
22
24
  _ref$checked = _ref.checked,
23
25
  checked = _ref$checked === void 0 ? false : _ref$checked,
24
26
  _ref$disabled = _ref.disabled,
@@ -48,7 +50,8 @@ var Switcher = function Switcher(_ref) {
48
50
  }, [isInteractiveDisabled, onChange]);
49
51
  return /*#__PURE__*/React.createElement("div", _extends({
50
52
  className: cn({
51
- disabled: disabled
53
+ disabled: disabled,
54
+ theme: theme
52
55
  }, className)
53
56
  }, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), isLeftContent && /*#__PURE__*/React.createElement("div", {
54
57
  className: cn('content', {
@@ -89,6 +92,7 @@ Switcher.propTypes = {
89
92
  className: PropTypes.string,
90
93
  textSize: PropTypes.oneOf(['small', 'medium']),
91
94
  textPosition: PropTypes.oneOf(['left', 'right']),
95
+ theme: PropTypes.oneOf(['on-white', 'on-gray']),
92
96
  checked: PropTypes.bool,
93
97
  disabled: PropTypes.bool,
94
98
  waiting: PropTypes.bool,
@@ -80,12 +80,20 @@
80
80
  left: auto;
81
81
  z-index: 0;
82
82
  border-radius: 8px;
83
- background-color: var(--stcWhite);
83
+ overflow: hidden;
84
+ background-color: var(--base);
84
85
  -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
85
86
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
86
87
  -webkit-transition-duration: 0.3s;
87
88
  transition-duration: 0.3s;
88
89
  }
90
+ .mfui-tabs__underline:before {
91
+ content: '';
92
+ position: absolute;
93
+ width: 100%;
94
+ height: 100%;
95
+ background-color: var(--stcWhite20);
96
+ }
89
97
  .mfui-tabs__arrow {
90
98
  position: absolute;
91
99
  top: 50%;
@@ -178,9 +186,9 @@
178
186
  padding-left: 8px;
179
187
  }
180
188
  .mfui-tabs__tab-inner_current {
181
- color: var(--stcBlack);
189
+ color: var(--content);
182
190
  cursor: auto;
183
- fill: var(--stcBlack);
191
+ fill: var(--content);
184
192
  }
185
193
  .mfui-tabs__tab-icon {
186
194
  width: 32px;
@@ -0,0 +1 @@
1
+ <svg width="12" height="12" xmlns="http://www.w3.org/2000/svg"><path d="M1 11L11 1M7 11l4-4"/></svg>
@@ -7,9 +7,12 @@ export { default as Caption } from './components/Caption/Caption';
7
7
  export { default as Carousel } from './components/Carousel/Carousel';
8
8
  export { default as Checkbox } from './components/Checkbox/Checkbox';
9
9
  export { default as checkBreakpointsPropTypes } from './components/Carousel/checkBreakpointsPropTypes';
10
- export { default as Chip } from './components/Chip/Chip';
10
+ export { default as Chip } from './components/Chips/Chip';
11
+ export { default as Chips } from './components/Chips/Chips';
12
+ export { default as ChipsDropdown } from './components/Chips/components/ChipsDropdown';
11
13
  export { default as Collapse } from './components/Collapse/Collapse';
12
14
  export { default as ContentArea } from './components/ContentArea/ContentArea';
15
+ export { default as ContentView } from './components/ContentView/ContentView';
13
16
  export { default as Counter } from './components/Counter/Counter';
14
17
  export { default as CounterBadge } from './components/Badges/components/CounterBadge/CounterBadge';
15
18
  export { default as countGraphemes } from './components/TextField/utils/countGraphemes';
@@ -17,7 +20,6 @@ export { default as Day } from './components/Calendar/components/Day/Day';
17
20
  export { default as Grid } from './components/Grid/Grid';
18
21
  export { default as GridColumn } from './components/Grid/GridColumn';
19
22
  export { default as Header } from './components/Header/Header';
20
- export { default as helpers } from './components/Pagination/helpers';
21
23
  export { default as Link } from './components/Link/Link';
22
24
  export { default as List } from './components/List/List';
23
25
  export { default as ListItem } from './components/List/ListItem';
@@ -38,6 +40,11 @@ export { default as Search } from './components/Search/Search';
38
40
  export { default as Select } from './components/Select/Select';
39
41
  export { default as Selector } from './components/Selector/Selector';
40
42
  export { default as selectReducer } from './components/Select/reducer/selectReducer';
43
+ export { default as Slider } from './components/Sliders/Slider/Slider';
44
+ export { default as SliderDisplayValue } from './components/Sliders/components/SliderDisplayValue/SliderDisplayValue';
45
+ export { default as SliderRange } from './components/Sliders/SliderRange/SliderRange';
46
+ export { default as SliderRatio } from './components/Sliders/SliderRatio/SliderRatio';
47
+ export { default as SliderScale } from './components/Sliders/components/SliderScale/SliderScale';
41
48
  export { default as Snackbar } from './components/Snackbar/Snackbar';
42
49
  export { default as SnackbarTimer } from './components/Snackbar/SnackbarTimer/SnackbarTimer';
43
50
  export { default as Switcher } from './components/Switcher/Switcher';
package/dist/es/index.js CHANGED
@@ -7,9 +7,12 @@ export { default as Caption } from "./components/Caption/Caption";
7
7
  export { default as Carousel } from "./components/Carousel/Carousel";
8
8
  export { default as Checkbox } from "./components/Checkbox/Checkbox";
9
9
  export { default as checkBreakpointsPropTypes } from "./components/Carousel/checkBreakpointsPropTypes";
10
- export { default as Chip } from "./components/Chip/Chip";
10
+ export { default as Chip } from "./components/Chips/Chip";
11
+ export { default as Chips } from "./components/Chips/Chips";
12
+ export { default as ChipsDropdown } from "./components/Chips/components/ChipsDropdown";
11
13
  export { default as Collapse } from "./components/Collapse/Collapse";
12
14
  export { default as ContentArea } from "./components/ContentArea/ContentArea";
15
+ export { default as ContentView } from "./components/ContentView/ContentView";
13
16
  export { default as Counter } from "./components/Counter/Counter";
14
17
  export { default as CounterBadge } from "./components/Badges/components/CounterBadge/CounterBadge";
15
18
  export { default as countGraphemes } from "./components/TextField/utils/countGraphemes";
@@ -17,7 +20,6 @@ export { default as Day } from "./components/Calendar/components/Day/Day";
17
20
  export { default as Grid } from "./components/Grid/Grid";
18
21
  export { default as GridColumn } from "./components/Grid/GridColumn";
19
22
  export { default as Header } from "./components/Header/Header";
20
- export { default as helpers } from "./components/Pagination/helpers";
21
23
  export { default as Link } from "./components/Link/Link";
22
24
  export { default as List } from "./components/List/List";
23
25
  export { default as ListItem } from "./components/List/ListItem";
@@ -38,6 +40,11 @@ export { default as Search } from "./components/Search/Search";
38
40
  export { default as Select } from "./components/Select/Select";
39
41
  export { default as Selector } from "./components/Selector/Selector";
40
42
  export { default as selectReducer } from "./components/Select/reducer/selectReducer";
43
+ export { default as Slider } from "./components/Sliders/Slider/Slider";
44
+ export { default as SliderDisplayValue } from "./components/Sliders/components/SliderDisplayValue/SliderDisplayValue";
45
+ export { default as SliderRange } from "./components/Sliders/SliderRange/SliderRange";
46
+ export { default as SliderRatio } from "./components/Sliders/SliderRatio/SliderRatio";
47
+ export { default as SliderScale } from "./components/Sliders/components/SliderScale/SliderScale";
41
48
  export { default as Snackbar } from "./components/Snackbar/Snackbar";
42
49
  export { default as SnackbarTimer } from "./components/Snackbar/SnackbarTimer/SnackbarTimer";
43
50
  export { default as Switcher } from "./components/Switcher/Switcher";
@@ -11,9 +11,6 @@
11
11
  align-items: center;
12
12
  -webkit-box-sizing: border-box;
13
13
  box-sizing: border-box;
14
- min-width: -webkit-fit-content;
15
- min-width: -moz-fit-content;
16
- min-width: fit-content;
17
14
  padding: 8px 20px;
18
15
  border: none;
19
16
  border-radius: 20px;
@@ -43,6 +40,47 @@
43
40
  .mfui-chip:hover {
44
41
  background-color: var(--spbSky1);
45
42
  }
43
+ .mfui-chip__inner {
44
+ overflow: hidden;
45
+ white-space: nowrap;
46
+ text-overflow: ellipsis;
47
+ }
48
+ .mfui-chip__counter {
49
+ display: -webkit-inline-box;
50
+ display: -ms-inline-flexbox;
51
+ display: inline-flex;
52
+ -webkit-box-align: center;
53
+ -ms-flex-align: center;
54
+ align-items: center;
55
+ margin-left: 6px;
56
+ color: var(--spbSky3);
57
+ }
58
+ @media screen and (max-width: 767px) {
59
+ .mfui-chip__counter {
60
+ margin-left: 4px;
61
+ }
62
+ }
63
+ .mfui-chip__icon,
64
+ .mfui-chip__icon-arrow {
65
+ display: block;
66
+ width: 20px;
67
+ min-width: 20px;
68
+ max-height: 20px;
69
+ }
70
+ .mfui-chip__icon svg,
71
+ .mfui-chip__icon-arrow svg {
72
+ display: block;
73
+ width: 100%;
74
+ height: 100%;
75
+ }
76
+ .mfui-chip__icon {
77
+ margin-right: 6px;
78
+ }
79
+ @media screen and (max-width: 767px) {
80
+ .mfui-chip__icon {
81
+ margin-right: 4px;
82
+ }
83
+ }
46
84
  .mfui-chip_disabled,
47
85
  .mfui-chip_disabled:hover {
48
86
  color: var(--spbSky3);
@@ -54,6 +92,10 @@
54
92
  .mfui-chip_disabled:hover svg {
55
93
  fill: var(--spbSky3);
56
94
  }
95
+ .mfui-chip_disabled .mfui-chip__counter,
96
+ .mfui-chip_disabled:hover .mfui-chip__counter {
97
+ color: var(--spbSky2);
98
+ }
57
99
  .mfui-chip_checked,
58
100
  .mfui-chip_checked:hover {
59
101
  color: var(--stcWhite);
@@ -63,6 +105,10 @@
63
105
  .mfui-chip_checked:hover svg {
64
106
  fill: var(--stcWhite);
65
107
  }
108
+ .mfui-chip_checked .mfui-chip__counter,
109
+ .mfui-chip_checked:hover .mfui-chip__counter {
110
+ color: var(--stcWhite);
111
+ }
66
112
  .mfui-chip_checked.mfui-chip_color_black,
67
113
  .mfui-chip_checked.mfui-chip_color_black:hover {
68
114
  color: var(--base);
@@ -72,6 +118,10 @@
72
118
  .mfui-chip_checked.mfui-chip_color_black:hover svg {
73
119
  fill: var(--base);
74
120
  }
121
+ .mfui-chip_checked.mfui-chip_color_black .mfui-chip__counter,
122
+ .mfui-chip_checked.mfui-chip_color_black:hover .mfui-chip__counter {
123
+ color: var(--base);
124
+ }
75
125
  .mfui-chip_with-icon {
76
126
  padding-left: 16px;
77
127
  }
@@ -80,32 +130,3 @@
80
130
  padding-left: 8px;
81
131
  }
82
132
  }
83
- .mfui-chip__inner {
84
- display: -webkit-inline-box;
85
- display: -ms-inline-flexbox;
86
- display: inline-flex;
87
- -webkit-box-align: center;
88
- -ms-flex-align: center;
89
- align-items: center;
90
- -webkit-box-pack: center;
91
- -ms-flex-pack: center;
92
- justify-content: center;
93
- white-space: nowrap;
94
- }
95
- .mfui-chip__icon {
96
- display: block;
97
- width: 20px;
98
- min-width: 20px;
99
- max-height: 20px;
100
- margin-right: 6px;
101
- }
102
- @media screen and (max-width: 767px) {
103
- .mfui-chip__icon {
104
- margin-right: 4px;
105
- }
106
- }
107
- .mfui-chip__icon svg {
108
- display: block;
109
- width: 100%;
110
- height: 100%;
111
- }
@@ -0,0 +1,74 @@
1
+ import React, { Ref } from 'react';
2
+ import * as PropTypes from 'prop-types';
3
+ import './Chip.less';
4
+ export declare type ChipIdType = number | string;
5
+ export declare const ChipColors: {
6
+ readonly DEFAULT: "default";
7
+ readonly BLACK: "black";
8
+ };
9
+ export declare type ChipColorsType = typeof ChipColors[keyof typeof ChipColors];
10
+ export declare const ChipArrow: {
11
+ readonly UP: "up";
12
+ readonly DOWN: "down";
13
+ };
14
+ export declare type ChipArrowType = typeof ChipArrow[keyof typeof ChipArrow];
15
+ export interface IChipProps {
16
+ /** Идентификатор */
17
+ id: ChipIdType;
18
+ /** Набор цветов для компонента */
19
+ color?: ChipColorsType;
20
+ /** Отображение в отмеченном (зажатом) состоянии */
21
+ checked?: boolean;
22
+ /** Отключенное состояние */
23
+ disabled?: boolean;
24
+ /** Иконка */
25
+ icon?: JSX.Element;
26
+ /** Значение счетчика */
27
+ counterValue?: number;
28
+ /** Стрелка вверх или вниз */
29
+ arrow?: ChipArrowType;
30
+ /** Обработчик нажатия */
31
+ onClick?: (e: React.SyntheticEvent<EventTarget>, id?: ChipIdType) => void;
32
+ /** Дочерние элементы */
33
+ children?: React.ReactNode;
34
+ /** Дополнительный класс корневого элемента */
35
+ className?: string;
36
+ /** Дополнительные классы для внутренних элементов */
37
+ classes?: {
38
+ root?: string;
39
+ inner?: string;
40
+ icon?: string;
41
+ counter?: string;
42
+ };
43
+ /** Дополнительные data атрибуты к внутренним элементам */
44
+ dataAttrs?: {
45
+ root?: Record<string, string>;
46
+ inner?: Record<string, string>;
47
+ icon?: Record<string, string>;
48
+ counter?: Record<string, string>;
49
+ arrow?: Record<string, string>;
50
+ };
51
+ /** Ссылка на элемент */
52
+ rootRef?: Ref<HTMLButtonElement>;
53
+ }
54
+ declare const Chip: React.FC<IChipProps>;
55
+ export declare const ChipPropType: {
56
+ id: PropTypes.Validator<string | number>;
57
+ color: PropTypes.Requireable<"default" | "black">;
58
+ checked: PropTypes.Requireable<boolean>;
59
+ disabled: PropTypes.Requireable<boolean>;
60
+ icon: PropTypes.Requireable<PropTypes.ReactElementLike>;
61
+ counterValue: PropTypes.Requireable<number>;
62
+ arrow: PropTypes.Requireable<"down" | "up">;
63
+ onClick: PropTypes.Requireable<(...args: any[]) => any>;
64
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
65
+ className: PropTypes.Requireable<string>;
66
+ classes: PropTypes.Requireable<{
67
+ [x: string]: string | null | undefined;
68
+ }>;
69
+ dataAttrs: PropTypes.Requireable<{
70
+ [x: string]: object | null | undefined;
71
+ }>;
72
+ rootRef: PropTypes.Requireable<any>;
73
+ };
74
+ export default Chip;
@@ -5,10 +5,12 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.ChipPropType = exports.ChipArrow = exports.ChipColors = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
+ require("core-js/modules/es.object.values.js");
13
+
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
16
  var _uiHelpers = require("@megafon/ui-helpers");
@@ -21,6 +23,36 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
21
23
 
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
25
 
26
+ var ArrowDown = function ArrowDown(props) {
27
+ return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({
28
+ viewBox: "0 0 20 20"
29
+ }, props), /*#__PURE__*/_react["default"].createElement("path", {
30
+ d: "M6 8h8l-4 5z",
31
+ fillRule: "evenodd",
32
+ clipRule: "evenodd"
33
+ }));
34
+ };
35
+
36
+ var ArrowUp = function ArrowUp(props) {
37
+ return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({
38
+ viewBox: "0 0 20 20"
39
+ }, props), /*#__PURE__*/_react["default"].createElement("path", {
40
+ d: "M14 12H6l4-5z",
41
+ fillRule: "evenodd",
42
+ clipRule: "evenodd"
43
+ }));
44
+ };
45
+
46
+ var ChipColors = {
47
+ DEFAULT: 'default',
48
+ BLACK: 'black'
49
+ };
50
+ exports.ChipColors = ChipColors;
51
+ var ChipArrow = {
52
+ UP: 'up',
53
+ DOWN: 'down'
54
+ };
55
+ exports.ChipArrow = ChipArrow;
24
56
  var cn = (0, _uiHelpers.cnCreate)('mfui-chip');
25
57
 
26
58
  var Chip = function Chip(_ref) {
@@ -32,6 +64,8 @@ var Chip = function Chip(_ref) {
32
64
  _ref$disabled = _ref.disabled,
33
65
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
34
66
  icon = _ref.icon,
67
+ counterValue = _ref.counterValue,
68
+ arrow = _ref.arrow,
35
69
  onClick = _ref.onClick,
36
70
  children = _ref.children,
37
71
  className = _ref.className,
@@ -60,23 +94,31 @@ var Chip = function Chip(_ref) {
60
94
  className: cn('icon', [classes.icon])
61
95
  }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.icon)), icon), /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({
62
96
  className: cn('inner', [classes.inner])
63
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), children));
97
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), children), !!counterValue && /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({
98
+ className: cn('counter', [classes.counter])
99
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.counter)), counterValue), !!arrow && /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
100
+ className: cn('icon-arrow')
101
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.arrow)), arrow === 'up' ? /*#__PURE__*/_react["default"].createElement(ArrowUp, null) : /*#__PURE__*/_react["default"].createElement(ArrowDown, null)));
64
102
  };
65
103
 
66
- Chip.propTypes = {
67
- id: PropTypes.string.isRequired,
68
- color: PropTypes.oneOf(['default', 'black']),
104
+ var ChipPropType = {
105
+ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
106
+ color: PropTypes.oneOf(Object.values(ChipColors)),
69
107
  checked: PropTypes.bool,
70
108
  disabled: PropTypes.bool,
71
109
  icon: PropTypes.element,
110
+ counterValue: PropTypes.number,
111
+ arrow: PropTypes.oneOf(Object.values(ChipArrow)),
112
+ onClick: PropTypes.func,
113
+ children: PropTypes.node,
72
114
  className: PropTypes.string,
73
115
  classes: PropTypes.objectOf(PropTypes.string),
74
116
  dataAttrs: PropTypes.objectOf(PropTypes.object),
75
- onClick: PropTypes.func,
76
- children: PropTypes.node,
77
117
  rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
78
118
  current: PropTypes.elementType
79
119
  }), PropTypes.any])])
80
120
  };
121
+ exports.ChipPropType = ChipPropType;
122
+ Chip.propTypes = ChipPropType;
81
123
  var _default = Chip;
82
124
  exports["default"] = _default;
@@ -0,0 +1,19 @@
1
+ .mfui-chips {
2
+ display: -webkit-box;
3
+ display: -ms-flexbox;
4
+ display: flex;
5
+ -ms-flex-wrap: wrap;
6
+ flex-wrap: wrap;
7
+ gap: 12px;
8
+ width: 100%;
9
+ }
10
+ @media screen and (max-width: 767px) {
11
+ .mfui-chips {
12
+ gap: 8px;
13
+ }
14
+ }
15
+ .mfui-chips_hidden {
16
+ display: grid;
17
+ grid-template-columns: repeat(auto-fit, minMax(0, -webkit-min-content));
18
+ grid-template-columns: repeat(auto-fit, minMax(0, min-content));
19
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { ChipColorsType, ChipIdType, IChipProps } from './Chip';
3
+ import './Chips.less';
4
+ export interface IChipsProps {
5
+ /** Массив элементов */
6
+ items: IChipProps[];
7
+ /** Значение */
8
+ value: ChipIdType;
9
+ /** Цвет активного элемента */
10
+ color?: ChipColorsType;
11
+ /** Количество отображаемых элементов на всех разрешениях экрана */
12
+ visibleItemsCountAll?: number;
13
+ /** Количество отображаемых элементов на разрешении 768 - 1023 */
14
+ visibleItemsCountTablet?: number;
15
+ /** Количество отображаемых элементов на разрешении 1024 - 1279 */
16
+ visibleItemsCountDesktop?: number;
17
+ /** Количество отображаемых элементов на разрешении 1280+ */
18
+ visibleItemsCountWide?: number;
19
+ /** Название дополнительной кнопки */
20
+ moreTitle?: string;
21
+ /** Обработчик изменения значения */
22
+ onChange?: (id: ChipIdType, e?: React.SyntheticEvent<EventTarget>) => void;
23
+ /** Дополнительный класс корневого элемента */
24
+ className?: string;
25
+ }
26
+ declare const Chips: React.FC<IChipsProps>;
27
+ export default Chips;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ require("core-js/modules/es.array.slice.js");
15
+
16
+ require("core-js/modules/es.array.map.js");
17
+
18
+ require("core-js/modules/es.object.values.js");
19
+
20
+ var _react = _interopRequireDefault(require("react"));
21
+
22
+ var _uiHelpers = require("@megafon/ui-helpers");
23
+
24
+ var _throttleTime = _interopRequireDefault(require("@megafon/ui-shared/src/constants/throttleTime"));
25
+
26
+ var _lodash = _interopRequireDefault(require("lodash.throttle"));
27
+
28
+ var PropTypes = _interopRequireWildcard(require("prop-types"));
29
+
30
+ var _Chip = _interopRequireWildcard(require("./Chip"));
31
+
32
+ var _ChipsDropdown = _interopRequireDefault(require("./components/ChipsDropdown"));
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
+
40
+ var DESKTOP_SMALL_START = _uiHelpers.breakpoints.DESKTOP_SMALL_START,
41
+ DESKTOP_MIDDLE_START = _uiHelpers.breakpoints.DESKTOP_MIDDLE_START,
42
+ MOBILE_BIG_START = _uiHelpers.breakpoints.MOBILE_BIG_START;
43
+ var cn = (0, _uiHelpers.cnCreate)('mfui-chips');
44
+
45
+ var Chips = function Chips(_ref) {
46
+ var items = _ref.items,
47
+ value = _ref.value,
48
+ _ref$color = _ref.color,
49
+ color = _ref$color === void 0 ? 'default' : _ref$color,
50
+ _ref$moreTitle = _ref.moreTitle,
51
+ moreTitle = _ref$moreTitle === void 0 ? 'Еще' : _ref$moreTitle,
52
+ visibleItemsCountAll = _ref.visibleItemsCountAll,
53
+ visibleItemsCountTablet = _ref.visibleItemsCountTablet,
54
+ visibleItemsCountDesktop = _ref.visibleItemsCountDesktop,
55
+ visibleItemsCountWide = _ref.visibleItemsCountWide,
56
+ onChange = _ref.onChange,
57
+ className = _ref.className;
58
+
59
+ var _React$useState = _react["default"].useState(value),
60
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
61
+ selectedId = _React$useState2[0],
62
+ setSelectedId = _React$useState2[1];
63
+
64
+ var _React$useState3 = _react["default"].useState(visibleItemsCountAll),
65
+ _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
66
+ visibleItemsCount = _React$useState4[0],
67
+ setVisibleItemsCount = _React$useState4[1];
68
+
69
+ var _React$useState5 = _react["default"].useState([]),
70
+ _React$useState6 = (0, _slicedToArray2["default"])(_React$useState5, 2),
71
+ visibleItems = _React$useState6[0],
72
+ setVisibleItems = _React$useState6[1];
73
+
74
+ var _React$useState7 = _react["default"].useState(null),
75
+ _React$useState8 = (0, _slicedToArray2["default"])(_React$useState7, 2),
76
+ hiddenItems = _React$useState8[0],
77
+ setHiddenItems = _React$useState8[1];
78
+
79
+ var handleClick = _react["default"].useCallback(function (e, id) {
80
+ e.persist();
81
+ setSelectedId(id);
82
+ onChange === null || onChange === void 0 ? void 0 : onChange(id, e);
83
+ }, [onChange]);
84
+
85
+ _react["default"].useEffect(function () {
86
+ var resizeHandler = function resizeHandler() {
87
+ var windowWidth = window.innerWidth;
88
+
89
+ if (visibleItemsCountWide && windowWidth >= DESKTOP_MIDDLE_START) {
90
+ setVisibleItemsCount(visibleItemsCountWide);
91
+ return;
92
+ }
93
+
94
+ if (visibleItemsCountDesktop && windowWidth >= DESKTOP_SMALL_START && windowWidth < DESKTOP_MIDDLE_START) {
95
+ setVisibleItemsCount(visibleItemsCountDesktop);
96
+ return;
97
+ }
98
+
99
+ if (visibleItemsCountTablet && windowWidth >= MOBILE_BIG_START && windowWidth < DESKTOP_SMALL_START) {
100
+ setVisibleItemsCount(visibleItemsCountTablet);
101
+ return;
102
+ }
103
+
104
+ setVisibleItemsCount(visibleItemsCountAll);
105
+ };
106
+
107
+ var resizeHandlerThrottled = (0, _lodash["default"])(resizeHandler, _throttleTime["default"].resize);
108
+ resizeHandler();
109
+ window.addEventListener('resize', resizeHandlerThrottled);
110
+ return function () {
111
+ window.removeEventListener('resize', resizeHandlerThrottled);
112
+ };
113
+ }, [visibleItemsCountAll, visibleItemsCountDesktop, visibleItemsCountTablet, visibleItemsCountWide]);
114
+
115
+ _react["default"].useEffect(function () {
116
+ if (visibleItemsCount && items.length > visibleItemsCount) {
117
+ setVisibleItems(items.slice(0, visibleItemsCount));
118
+ setHiddenItems(items.slice(visibleItemsCount));
119
+ } else {
120
+ setVisibleItems(items);
121
+ setHiddenItems(null);
122
+ }
123
+ }, [items, visibleItemsCount]);
124
+
125
+ return /*#__PURE__*/_react["default"].createElement("div", {
126
+ className: cn({
127
+ hidden: !!hiddenItems
128
+ }, [className])
129
+ }, visibleItems.map(function (item) {
130
+ return /*#__PURE__*/_react["default"].createElement(_Chip["default"], (0, _extends2["default"])({
131
+ key: item.id
132
+ }, item, {
133
+ checked: item.id === selectedId,
134
+ color: color,
135
+ onClick: handleClick
136
+ }), !!(item === null || item === void 0 ? void 0 : item.children) && item.children);
137
+ }), !!hiddenItems && /*#__PURE__*/_react["default"].createElement(_ChipsDropdown["default"], {
138
+ value: selectedId,
139
+ items: hiddenItems,
140
+ moreTitle: moreTitle,
141
+ color: color,
142
+ onClick: handleClick
143
+ }));
144
+ };
145
+
146
+ Chips.propTypes = {
147
+ items: PropTypes.arrayOf(PropTypes.shape(_Chip.ChipPropType).isRequired).isRequired,
148
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
149
+ color: PropTypes.oneOf(Object.values(_Chip.ChipColors)),
150
+ visibleItemsCountAll: PropTypes.number,
151
+ visibleItemsCountTablet: PropTypes.number,
152
+ visibleItemsCountDesktop: PropTypes.number,
153
+ visibleItemsCountWide: PropTypes.number,
154
+ moreTitle: PropTypes.string,
155
+ onChange: PropTypes.func,
156
+ className: PropTypes.string
157
+ };
158
+ var _default = Chips;
159
+ exports["default"] = _default;