@megafon/ui-core 9.2.1 → 9.3.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 (63) hide show
  1. package/dist/es/components/Badges/PromoBadge/PromoBadge.css +1 -1
  2. package/dist/es/components/Badges/PromoBadge/PromoBadge.d.ts +7 -0
  3. package/dist/es/components/Badges/PromoBadge/PromoBadge.js +44 -4
  4. package/dist/es/components/Chips/Chips/Chip.css +1 -1
  5. package/dist/es/components/Chips/Chips/Chip.d.ts +14 -3
  6. package/dist/es/components/Chips/Chips/Chip.js +31 -5
  7. package/dist/es/components/Chips/Chips/ChipBadge.css +1 -0
  8. package/dist/es/components/Chips/Chips/ChipBadge.d.ts +8 -0
  9. package/dist/es/components/Chips/Chips/ChipBadge.js +29 -0
  10. package/dist/es/components/Chips/Chips/Chips.css +1 -1
  11. package/dist/es/components/Chips/Chips/Chips.d.ts +6 -6
  12. package/dist/es/components/Chips/Chips/Chips.js +2 -2
  13. package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.css +1 -1
  14. package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.d.ts +6 -6
  15. package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.js +5 -9
  16. package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.css +1 -1
  17. package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.d.ts +6 -6
  18. package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.js +2 -2
  19. package/dist/es/components/Modal/Modal.css +1 -1
  20. package/dist/es/components/Modal/Modal.js +15 -7
  21. package/dist/es/components/Modal/utils/utils.d.ts +1 -1
  22. package/dist/es/components/Modal/utils/utils.js +5 -1
  23. package/dist/es/components/MultipleSelect/MultipleSelect.css +1 -0
  24. package/dist/es/components/MultipleSelect/MultipleSelect.d.ts +63 -0
  25. package/dist/es/components/MultipleSelect/MultipleSelect.js +235 -0
  26. package/dist/es/components/Row/Row.css +1 -1
  27. package/dist/es/components/Row/Row.js +1 -1
  28. package/dist/es/components/Tooltip/Tooltip.d.ts +6 -0
  29. package/dist/es/components/Tooltip/Tooltip.js +19 -6
  30. package/dist/es/index.d.ts +2 -0
  31. package/dist/es/index.js +2 -0
  32. package/dist/lib/components/Badges/PromoBadge/PromoBadge.css +1 -1
  33. package/dist/lib/components/Badges/PromoBadge/PromoBadge.d.ts +7 -0
  34. package/dist/lib/components/Badges/PromoBadge/PromoBadge.js +45 -5
  35. package/dist/lib/components/Chips/Chips/Chip.css +1 -1
  36. package/dist/lib/components/Chips/Chips/Chip.d.ts +14 -3
  37. package/dist/lib/components/Chips/Chips/Chip.js +32 -6
  38. package/dist/lib/components/Chips/Chips/ChipBadge.css +1 -0
  39. package/dist/lib/components/Chips/Chips/ChipBadge.d.ts +8 -0
  40. package/dist/lib/components/Chips/Chips/ChipBadge.js +38 -0
  41. package/dist/lib/components/Chips/Chips/Chips.css +1 -1
  42. package/dist/lib/components/Chips/Chips/Chips.d.ts +6 -6
  43. package/dist/lib/components/Chips/Chips/Chips.js +2 -2
  44. package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.css +1 -1
  45. package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.d.ts +6 -6
  46. package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.js +5 -9
  47. package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.css +1 -1
  48. package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.d.ts +6 -6
  49. package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.js +2 -2
  50. package/dist/lib/components/Modal/Modal.css +1 -1
  51. package/dist/lib/components/Modal/Modal.js +14 -6
  52. package/dist/lib/components/Modal/utils/utils.d.ts +1 -1
  53. package/dist/lib/components/Modal/utils/utils.js +6 -2
  54. package/dist/lib/components/MultipleSelect/MultipleSelect.css +1 -0
  55. package/dist/lib/components/MultipleSelect/MultipleSelect.d.ts +63 -0
  56. package/dist/lib/components/MultipleSelect/MultipleSelect.js +244 -0
  57. package/dist/lib/components/Row/Row.css +1 -1
  58. package/dist/lib/components/Row/Row.js +1 -1
  59. package/dist/lib/components/Tooltip/Tooltip.d.ts +6 -0
  60. package/dist/lib/components/Tooltip/Tooltip.js +19 -6
  61. package/dist/lib/index.d.ts +2 -0
  62. package/dist/lib/index.js +14 -0
  63. package/package.json +2 -2
@@ -4,13 +4,20 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = exports.ChipThemes = exports.ChipColors = exports.ChipArrow = void 0;
7
+ exports["default"] = exports.ChipType = exports.ChipThemes = exports.ChipColors = exports.ChipArrow = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _uiHelpers = require("@megafon/ui-helpers");
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ var TurnOn = function TurnOn(props) {
15
+ return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
16
+ viewBox: "0 0 20 20"
17
+ }, props), /*#__PURE__*/React.createElement("path", {
18
+ d: "M12.352 12a2 2 0 110 4 2 2 0 010-4zm-2.828 1.25c-.06.24-.094.49-.094.75s.034.51.094.75H2.73A.74.74 0 012 14a.74.74 0 01.729-.75h6.795zm7.747 0A.74.74 0 0118 14a.74.74 0 01-.729.75h-2.108c.06-.24.096-.49.096-.75s-.036-.51-.096-.75h2.108zM7.46 4a2 2 0 110 4 2 2 0 010-4zM4.667 5.25c-.06.24-.095.49-.095.75s.035.51.095.75H2.729A.74.74 0 012 6a.74.74 0 01.729-.75h1.938zm12.604 0A.74.74 0 0118 6a.74.74 0 01-.729.75h-6.965c.06-.24.094-.49.094-.75s-.034-.51-.094-.75h6.966z"
19
+ }));
20
+ };
14
21
  var ArrowDown = function ArrowDown(props) {
15
22
  return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
16
23
  viewBox: "0 0 20 20"
@@ -33,6 +40,11 @@ var ChipThemes = exports.ChipThemes = {
33
40
  WHITE: 'white',
34
41
  GRAY: 'gray'
35
42
  };
43
+ var ChipType = exports.ChipType = {
44
+ DEFAULT: 'default',
45
+ FILTER: 'filter'
46
+ };
47
+ // DEPRECATED -------------------------------------------------------
36
48
  var ChipArrow = exports.ChipArrow = {
37
49
  UP: 'up',
38
50
  DOWN: 'down'
@@ -41,17 +53,22 @@ var cn = (0, _uiHelpers.cnCreate)('mfui-9-chip');
41
53
  var Chip = function Chip(_ref) {
42
54
  var id = _ref.id,
43
55
  title = _ref.title,
56
+ _ref$type = _ref.type,
57
+ type = _ref$type === void 0 ? 'default' : _ref$type,
44
58
  _ref$color = _ref.color,
45
59
  color = _ref$color === void 0 ? 'default' : _ref$color,
46
60
  _ref$theme = _ref.theme,
47
61
  theme = _ref$theme === void 0 ? 'white' : _ref$theme,
48
62
  _ref$checked = _ref.checked,
49
63
  checked = _ref$checked === void 0 ? false : _ref$checked,
64
+ _ref$opened = _ref.opened,
65
+ opened = _ref$opened === void 0 ? false : _ref$opened,
50
66
  _ref$disabled = _ref.disabled,
51
67
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
52
68
  icon = _ref.icon,
53
69
  counterValue = _ref.counterValue,
54
70
  arrow = _ref.arrow,
71
+ showArrow = _ref.showArrow,
55
72
  onClick = _ref.onClick,
56
73
  children = _ref.children,
57
74
  className = _ref.className,
@@ -60,6 +77,9 @@ var Chip = function Chip(_ref) {
60
77
  dataAttrs = _ref.dataAttrs,
61
78
  rootRef = _ref.rootRef;
62
79
  var checkedClass = checked ? classes.checked : undefined;
80
+ var filterIcon = type === 'filter' ? /*#__PURE__*/React.createElement(TurnOn, null) : undefined;
81
+ var finalIcon = icon || filterIcon;
82
+ var content = children || title;
63
83
  var handleClick = React.useCallback(function (e) {
64
84
  onClick === null || onClick === void 0 ? void 0 : onClick(e, id);
65
85
  }, [onClick, id]);
@@ -67,10 +87,14 @@ var Chip = function Chip(_ref) {
67
87
  type: "button",
68
88
  className: cn({
69
89
  color: color,
90
+ type: type,
70
91
  theme: theme,
71
92
  checked: checked,
93
+ opened: opened,
72
94
  disabled: disabled,
73
- 'with-icon': !!icon
95
+ 'with-arrow': !!arrow || showArrow,
96
+ 'with-counter': !!counterValue,
97
+ 'with-icon': !!finalIcon
74
98
  }, [className, classes.root, checkedClass])
75
99
  }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
76
100
  disabled: disabled,
@@ -78,14 +102,16 @@ var Chip = function Chip(_ref) {
78
102
  ref: rootRef
79
103
  }, checked && {
80
104
  tabIndex: -1
81
- }), !!icon && /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
105
+ }), !!finalIcon && /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
82
106
  className: cn('icon', [classes.icon])
83
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.icon)), icon), /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
107
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.icon)), finalIcon), !!content && /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
84
108
  className: cn('inner', [classes.inner])
85
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), children || title), !!counterValue && /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
109
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), content), !!counterValue && /*#__PURE__*/React.createElement("span", (0, _extends2["default"])({
86
110
  className: cn('counter', [classes.counter])
87
111
  }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.counter)), counterValue), !!arrow && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
88
112
  className: cn('icon-arrow', [classes.arrow])
89
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.arrow)), arrow === 'up' ? /*#__PURE__*/React.createElement(ArrowUp, null) : /*#__PURE__*/React.createElement(ArrowDown, null)));
113
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.arrow)), arrow === 'up' ? /*#__PURE__*/React.createElement(ArrowUp, null) : /*#__PURE__*/React.createElement(ArrowDown, null)), showArrow && /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
114
+ className: cn('icon-arrow', [classes.arrow])
115
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.arrow)), /*#__PURE__*/React.createElement(ArrowDown, null)));
90
116
  };
91
117
  var _default = exports["default"] = Chip;
@@ -0,0 +1 @@
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-chip-badge__badge{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:1;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-bottom:-4px;margin-left:auto}.mfui-9-chip-badge__chip{width:100%}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { IChipProps } from './Chip';
3
+ import './ChipBadge.scss';
4
+ export interface IChipBadgeProps extends IChipProps {
5
+ badge?: React.ReactNode;
6
+ }
7
+ declare const ChipBadge: React.FC<IChipBadgeProps>;
8
+ export default ChipBadge;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ require("core-js/modules/es.symbol.js");
10
+ require("core-js/modules/es.array.index-of.js");
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _uiHelpers = require("@megafon/ui-helpers");
13
+ var _Chip = _interopRequireDefault(require("./Chip"));
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
18
+ var t = {};
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
21
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
22
+ }
23
+ return t;
24
+ };
25
+ var cn = (0, _uiHelpers.cnCreate)('mfui-9-chip-badge');
26
+ var ChipBadge = function ChipBadge(_a) {
27
+ var badge = _a.badge,
28
+ className = _a.className,
29
+ chipProps = __rest(_a, ["badge", "className"]);
30
+ return /*#__PURE__*/React.createElement("div", {
31
+ className: cn()
32
+ }, !!badge && /*#__PURE__*/React.createElement("div", {
33
+ className: cn('badge')
34
+ }, badge), /*#__PURE__*/React.createElement(_Chip["default"], (0, _extends2["default"])({
35
+ className: cn('chip', [className])
36
+ }, chipProps)));
37
+ };
38
+ var _default = exports["default"] = ChipBadge;
@@ -1 +1 @@
1
- h1,h2,h3,h4,h5{margin:0}.mfui-9-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;width:100%}@media screen and (max-width:767px){.mfui-9-chips{gap:8px}}.mfui-9-chips_hidden{display:grid;grid-template-columns:repeat(auto-fit,minMax(0,-webkit-min-content));grid-template-columns:repeat(auto-fit,minMax(0,min-content))}.mfui-9-chips_align_center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;-webkit-box-align:end;-ms-flex-align:end;align-items:end;width:100%}@media screen and (max-width:767px){.mfui-9-chips{gap:8px}}.mfui-9-chips_hidden{display:grid;grid-template-columns:repeat(auto-fit,minMax(0,-webkit-min-content));grid-template-columns:repeat(auto-fit,minMax(0,min-content))}.mfui-9-chips_align_center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
@@ -1,16 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { DropdownItemsPaddingType } from '../../Dropdown/Dropdown';
3
- import { ChipColorsType, ChipIdType, IChipProps, ChipsThemeType } from './Chip';
3
+ import { IChipBadgeProps } from './ChipBadge';
4
4
  import './Chips.scss';
5
5
  export interface IChipsProps {
6
6
  /** Массив элементов */
7
- items: IChipProps[];
7
+ items: IChipBadgeProps[];
8
8
  /** Значение (идентификатор активного элемента). Начальное значение в неконтролируемом состоянии */
9
- value?: ChipIdType;
9
+ value?: IChipBadgeProps['id'];
10
10
  /** Цвет активного элемента */
11
- color?: ChipColorsType;
11
+ color?: IChipBadgeProps['color'];
12
12
  /** Цвет неактивных элементов */
13
- theme?: ChipsThemeType;
13
+ theme?: IChipBadgeProps['theme'];
14
14
  /** Горизонтальное выравнивание */
15
15
  align?: 'left' | 'center';
16
16
  /** Переводит компонент в контролируемое состояние */
@@ -32,7 +32,7 @@ export interface IChipsProps {
32
32
  /** Отступы элементов списка выпадающего списка */
33
33
  dropdownPaddings?: DropdownItemsPaddingType;
34
34
  /** Обработчик изменения значения */
35
- onChange?: (id: ChipIdType, e?: React.SyntheticEvent<EventTarget>) => void;
35
+ onChange?: (id: IChipBadgeProps['id'], e?: React.SyntheticEvent<EventTarget>) => void;
36
36
  /** Дополнительный класс корневого элемента */
37
37
  className?: string;
38
38
  /** Дополнительные классы для внутренних элементов */
@@ -15,7 +15,7 @@ var React = _interopRequireWildcard(require("react"));
15
15
  var _uiHelpers = require("@megafon/ui-helpers");
16
16
  var _lodash = _interopRequireDefault(require("lodash.throttle"));
17
17
  var _throttleTime = _interopRequireDefault(require("../../../constants/throttleTime"));
18
- var _Chip = _interopRequireDefault(require("./Chip"));
18
+ var _ChipBadge = _interopRequireDefault(require("./ChipBadge"));
19
19
  var _ChipsDropdown = _interopRequireDefault(require("./components/ChipsDropdown/ChipsDropdown"));
20
20
  var _ChipsScrollPanel = _interopRequireDefault(require("./components/ChipsScrollPanel/ChipsScrollPanel"));
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -109,7 +109,7 @@ var Chips = function Chips(_ref) {
109
109
  var id = _a.id,
110
110
  children = _a.children,
111
111
  rest = __rest(_a, ["id", "children"]);
112
- return /*#__PURE__*/React.createElement(_Chip["default"], (0, _extends2["default"])({
112
+ return /*#__PURE__*/React.createElement(_ChipBadge["default"], (0, _extends2["default"])({
113
113
  key: id,
114
114
  id: id,
115
115
  checked: id === selectedId,
@@ -1 +1 @@
1
- h1,h2,h3,h4,h5{margin:0}.mfui-9-chips-dropdown{position:relative}.mfui-9-chips-dropdown__button{width:100%}.mfui-9-chips-dropdown__arrow{-webkit-transition:-webkit-transform .6s;transition:-webkit-transform .6s;transition:transform .6s;transition:transform .6s,-webkit-transform .6s}.mfui-9-chips-dropdown__arrow_open{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.mfui-9-chips-dropdown__dropdown{max-width:256px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mfui-9-chips-dropdown__list-item{display:-webkit-box;display:-ms-flexbox;display:flex}.mfui-9-chips-dropdown__icon{display:block;margin-right:16px;max-height:24px;min-width:24px;width:24px}.mfui-9-chips-dropdown__icon svg{display:block;height:100%;width:100%;fill:var(--content)}
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-chips-dropdown{position:relative}.mfui-9-chips-dropdown__button{width:100%}.mfui-9-chips-dropdown__dropdown{max-width:256px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mfui-9-chips-dropdown__list-item{display:-webkit-box;display:-ms-flexbox;display:flex}.mfui-9-chips-dropdown__icon{display:block;margin-right:16px;max-height:24px;min-width:24px;width:24px}.mfui-9-chips-dropdown__icon svg{display:block;height:100%;width:100%;fill:var(--content)}
@@ -1,14 +1,14 @@
1
1
  import * as React from 'react';
2
2
  import { DropdownItemsPaddingType } from '../../../../Dropdown/Dropdown';
3
- import { ChipColorsType, ChipIdType, ChipsThemeType, IChipProps } from '../../Chip';
3
+ import { IChipBadgeProps } from '../../ChipBadge';
4
4
  import './ChipsDropdown.scss';
5
5
  export interface IChipsDropdownProps {
6
- items: IChipProps[];
7
- color: ChipColorsType;
8
- theme: ChipsThemeType;
6
+ items: IChipBadgeProps[];
7
+ color: IChipBadgeProps['color'];
8
+ theme: IChipBadgeProps['theme'];
9
9
  moreTitle: string;
10
10
  short: boolean;
11
- value?: ChipIdType;
11
+ value?: IChipBadgeProps['id'];
12
12
  paddings?: DropdownItemsPaddingType;
13
13
  classes?: {
14
14
  root?: string;
@@ -22,7 +22,7 @@ export interface IChipsDropdownProps {
22
22
  list?: Record<string, string>;
23
23
  item?: Record<string, string>;
24
24
  };
25
- onClick: (e: React.SyntheticEvent<EventTarget>, id: ChipIdType) => void;
25
+ onClick: (e: React.SyntheticEvent<EventTarget>, id: IChipBadgeProps['id']) => void;
26
26
  }
27
27
  declare const ChipsDropdown: React.FC<IChipsDropdownProps>;
28
28
  export default ChipsDropdown;
@@ -13,7 +13,7 @@ require("core-js/modules/es.object.to-string.js");
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
  var _uiHelpers = require("@megafon/ui-helpers");
15
15
  var _Dropdown = _interopRequireDefault(require("../../../../Dropdown/Dropdown"));
16
- var _Chip = _interopRequireDefault(require("../../Chip"));
16
+ var _ChipBadge = _interopRequireDefault(require("../../ChipBadge"));
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -31,7 +31,6 @@ var ChipsDropdown = function ChipsDropdown(_ref) {
31
31
  classes = _ref$classes === void 0 ? {} : _ref$classes,
32
32
  dataAttrs = _ref.dataAttrs,
33
33
  onClick = _ref.onClick;
34
- var _a;
35
34
  var _React$useState = React.useState(false),
36
35
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
37
36
  isDropdownOpen = _React$useState2[0],
@@ -74,17 +73,14 @@ var ChipsDropdown = function ChipsDropdown(_ref) {
74
73
  return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
75
74
  className: cn([classes.root]),
76
75
  ref: dropdownRef
77
- }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/React.createElement(_Chip["default"], (0, _extends2["default"])({}, currentItem, {
76
+ }, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/React.createElement(_ChipBadge["default"], (0, _extends2["default"])({}, currentItem, {
78
77
  className: cn('button', [currentItem.className]),
79
- classes: (0, _extends2["default"])((0, _extends2["default"])({}, currentItem.classes), {
80
- arrow: cn('arrow', {
81
- open: isDropdownOpen
82
- }, [(_a = currentItem.classes) === null || _a === void 0 ? void 0 : _a.arrow])
83
- }),
78
+ classes: currentItem.classes,
84
79
  color: color,
85
80
  theme: theme,
81
+ opened: isDropdownOpen,
86
82
  checked: !!currentItem.id,
87
- arrow: "down",
83
+ showArrow: true,
88
84
  onClick: handleOpenItemList
89
85
  })), /*#__PURE__*/React.createElement(_Dropdown["default"], {
90
86
  items: dropdownItems,
@@ -1 +1 @@
1
- h1,h2,h3,h4,h5{margin:0}.mfui-9-chips-scroll-panel{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;overflow-x:auto;overflow-y:hidden;position:relative;-ms-overflow-style:none;scrollbar-width:none}.mfui-9-chips-scroll-panel::-webkit-scrollbar{display:none}.mfui-9-chips-scroll-panel__inner{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;height:100%}@media screen and (max-width:767px){.mfui-9-chips-scroll-panel__inner{gap:8px}}
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-chips-scroll-panel{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;overflow-x:auto;overflow-y:hidden;position:relative;-ms-overflow-style:none;scrollbar-width:none}.mfui-9-chips-scroll-panel::-webkit-scrollbar{display:none}.mfui-9-chips-scroll-panel__inner{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-align:end;-ms-flex-align:end;align-items:end;height:100%}@media screen and (max-width:767px){.mfui-9-chips-scroll-panel__inner{gap:8px}}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { ChipColorsType, ChipIdType, ChipsThemeType, IChipProps } from '../../Chip';
2
+ import { IChipBadgeProps } from '../../ChipBadge';
3
3
  import './ChipsScrollPanel.scss';
4
4
  export interface IChipsScrollPanelProps {
5
5
  classes?: {
@@ -10,11 +10,11 @@ export interface IChipsScrollPanelProps {
10
10
  root?: Record<string, string>;
11
11
  inner?: Record<string, string>;
12
12
  };
13
- value?: ChipIdType;
14
- items: IChipProps[];
15
- color: ChipColorsType;
16
- theme: ChipsThemeType;
17
- onClick: (e: React.SyntheticEvent<EventTarget>, id?: ChipIdType) => void;
13
+ value?: IChipBadgeProps['id'];
14
+ items: IChipBadgeProps[];
15
+ color: IChipBadgeProps['color'];
16
+ theme: IChipBadgeProps['theme'];
17
+ onClick: (e: React.SyntheticEvent<EventTarget>, id?: IChipBadgeProps['id']) => void;
18
18
  }
19
19
  declare const ChipsScrollPanel: React.FC<IChipsScrollPanelProps>;
20
20
  export default ChipsScrollPanel;
@@ -12,7 +12,7 @@ require("core-js/modules/es.array.index-of.js");
12
12
  require("core-js/modules/es.array.map.js");
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
  var _uiHelpers = require("@megafon/ui-helpers");
15
- var _Chip = _interopRequireDefault(require("../../Chip"));
15
+ var _ChipBadge = _interopRequireDefault(require("../../ChipBadge"));
16
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -84,7 +84,7 @@ var ChipsScrollPanel = function ChipsScrollPanel(_ref) {
84
84
  return /*#__PURE__*/React.createElement("div", {
85
85
  key: id,
86
86
  className: cn('slide')
87
- }, /*#__PURE__*/React.createElement(_Chip["default"], (0, _extends2["default"])({}, rest, {
87
+ }, /*#__PURE__*/React.createElement(_ChipBadge["default"], (0, _extends2["default"])({}, rest, {
88
88
  id: id,
89
89
  checked: checked,
90
90
  color: color,
@@ -1 +1 @@
1
- h1,h2,h3,h4,h5{margin:0}.mfui-9-modal-open-body{height:100%;overflow:hidden}.mfui-9-modal__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;left:0;position:fixed;top:0;z-index:1000;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-animation:show-popup-overlay .3s ease-out forwards;animation:show-popup-overlay .3s ease-out forwards;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;justify-content:flex-start;opacity:0;padding:72px 0;width:100%}.mfui-9-modal__modal-content{margin:auto;position:relative}.mfui-9-modal__modal-content:focus-visible{outline:none}.mfui-9-modal_full-view .mfui-9-modal__overlay{display:block;padding:32px 0 0;top:32px}.mfui-9-modal_full-view .mfui-9-modal__modal-content{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100%;width:100%}.mfui-9-modal_bottom-view .mfui-9-modal__overlay{bottom:0;display:block;height:auto;overflow:hidden;padding-bottom:0}.mfui-9-modal_bottom-view .mfui-9-modal__modal-content{height:100%;margin:0;outline:none;overflow:hidden}.mfui-9-modal_native-scroll .mfui-9-modal__overlay{overflow-x:hidden;overflow-y:scroll}@media screen and (hover:hover){.mfui-9-modal_native-scroll .mfui-9-modal__overlay{width:calc(100% + 15px)}}.mfui-9-modal_transition-end .mfui-9-modal__overlay{-webkit-animation:hide-popup-overlay .2s ease-in;animation:hide-popup-overlay .2s ease-in}@-webkit-keyframes show-popup-overlay{0%{opacity:0}to{opacity:1}}@keyframes show-popup-overlay{0%{opacity:0}to{opacity:1}}@-webkit-keyframes hide-popup-overlay{0%{opacity:1}to{opacity:0}}@keyframes hide-popup-overlay{0%{opacity:1}to{opacity:0}}
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-modal__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;left:0;position:fixed;top:0;z-index:1000;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-animation:show-popup-overlay .3s ease-out forwards;animation:show-popup-overlay .3s ease-out forwards;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;justify-content:flex-start;opacity:0;padding:72px 0;width:100%}.mfui-9-modal__modal-content{margin:auto;position:relative}.mfui-9-modal__modal-content:focus-visible{outline:none}.mfui-9-modal_full-view .mfui-9-modal__overlay{display:block;padding:32px 0 0;top:32px}.mfui-9-modal_full-view .mfui-9-modal__modal-content{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100%;width:100%}.mfui-9-modal_bottom-view .mfui-9-modal__overlay{bottom:0;display:block;height:auto;overflow:hidden;padding-bottom:0}.mfui-9-modal_bottom-view .mfui-9-modal__modal-content{height:100%;margin:0;outline:none;overflow:hidden}.mfui-9-modal_native-scroll .mfui-9-modal__overlay{overflow-x:hidden;overflow-y:scroll}@media screen and (hover:hover){.mfui-9-modal_native-scroll .mfui-9-modal__overlay{width:calc(100% + 15px)}}.mfui-9-modal_transition-end .mfui-9-modal__overlay{-webkit-animation:hide-popup-overlay .2s ease-in;animation:hide-popup-overlay .2s ease-in}@-webkit-keyframes show-popup-overlay{0%{opacity:0}to{opacity:1}}@keyframes show-popup-overlay{0%{opacity:0}to{opacity:1}}@-webkit-keyframes hide-popup-overlay{0%{opacity:1}to{opacity:0}}@keyframes hide-popup-overlay{0%{opacity:1}to{opacity:0}}
@@ -38,7 +38,6 @@ var MODAL_TRANSITIONS_STEPS_ENUM;
38
38
  MODAL_TRANSITIONS_STEPS_ENUM["MOVE_END_STEP"] = "move-end-step";
39
39
  MODAL_TRANSITIONS_STEPS_ENUM["END_STEP"] = "end-step";
40
40
  })(MODAL_TRANSITIONS_STEPS_ENUM || (exports.MODAL_TRANSITIONS_STEPS_ENUM = MODAL_TRANSITIONS_STEPS_ENUM = {}));
41
- var bodyCn = (0, _uiHelpers.cnCreate)('mfui-9-modal-open-body');
42
41
  var cn = (0, _uiHelpers.cnCreate)('mfui-9-modal');
43
42
  var Modal = function Modal(_ref) {
44
43
  var className = _ref.className,
@@ -173,9 +172,13 @@ var Modal = function Modal(_ref) {
173
172
  handleSetScrollContentMaxHeight();
174
173
  }, [isEnabledNativeScroll, handleSetScrollContentMaxHeight]);
175
174
  var handleAfterOpen = function handleAfterOpen() {
175
+ (0, _utils.changeBodyStyles)(true);
176
176
  handleSetStyles();
177
177
  onAfterModalOpen === null || onAfterModalOpen === void 0 ? void 0 : onAfterModalOpen();
178
178
  };
179
+ var handleAfterClose = function handleAfterClose() {
180
+ (0, _utils.changeBodyStyles)(false);
181
+ };
179
182
  var handlePopupClose = function handlePopupClose() {
180
183
  setTransitionStep(MODAL_TRANSITIONS_STEPS_ENUM.END_STEP);
181
184
  };
@@ -192,7 +195,6 @@ var Modal = function Modal(_ref) {
192
195
  };
193
196
  React.useEffect(function () {
194
197
  setIsPopupOpened(isOpened);
195
- (0, _utils.changeBodyPadding)(isOpened);
196
198
  if (!isOpened) {
197
199
  setContainerWrapHeight(undefined);
198
200
  }
@@ -252,14 +254,19 @@ var Modal = function Modal(_ref) {
252
254
  }, [isEnabledNativeScroll, isFooterPropsDiff, isRecalculateHeight, isHeaderPropsDiff, handleSetScrollContentMaxHeight]);
253
255
  React.useEffect(function () {
254
256
  return function () {
255
- setIsPopupOpened(false);
256
- document.body.style.paddingRight = '';
257
257
  if (!containerInnerRef.current || !resizeObserver.current) {
258
258
  return;
259
259
  }
260
260
  resizeObserver.current.unobserve(containerInnerRef.current);
261
261
  };
262
262
  }, []);
263
+ React.useEffect(function () {
264
+ return function () {
265
+ if (isOpened) {
266
+ (0, _utils.changeBodyStyles)(false);
267
+ }
268
+ };
269
+ }, [isOpened]);
263
270
  var contextProps = {
264
271
  classes: classes,
265
272
  dataAttrs: dataAttrs,
@@ -314,7 +321,7 @@ var Modal = function Modal(_ref) {
314
321
  'native-scroll': isEnabledNativeScroll
315
322
  }, [className]),
316
323
  overlayClassName: cn('overlay', classes === null || classes === void 0 ? void 0 : classes.overlay),
317
- bodyOpenClassName: bodyCn('', classes === null || classes === void 0 ? void 0 : classes.bodyOpen),
324
+ bodyOpenClassName: classes === null || classes === void 0 ? void 0 : classes.bodyOpen,
318
325
  isOpen: isPopupOpened,
319
326
  ariaHideApp: hideAriaApp,
320
327
  contentLabel: contentLabel,
@@ -322,7 +329,8 @@ var Modal = function Modal(_ref) {
322
329
  contentRef: getModalContentRef,
323
330
  overlayRef: handleGetModalOverlayRef,
324
331
  onRequestClose: handlePopupClose,
325
- onAfterOpen: handleAfterOpen
332
+ onAfterOpen: handleAfterOpen,
333
+ onAfterClose: handleAfterClose
326
334
  }, renderContent());
327
335
  };
328
336
  var _default = exports["default"] = Modal;
@@ -13,6 +13,6 @@ type CorrectMaxHeightArgsType = {
13
13
  };
14
14
  };
15
15
  export declare const getCorrectMaxHeight: ({ refs, props }: CorrectMaxHeightArgsType) => number;
16
- export declare const changeBodyPadding: (isOpened: boolean) => void;
16
+ export declare const changeBodyStyles: (isOpened: boolean) => void;
17
17
  declare const _default: null;
18
18
  export default _default;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getCorrectMaxHeight = exports["default"] = exports.changeBodyPadding = void 0;
6
+ exports.getCorrectMaxHeight = exports["default"] = exports.changeBodyStyles = void 0;
7
7
  require("core-js/modules/es.parse-int.js");
8
8
  var _uiHelpers = require("@megafon/ui-helpers");
9
9
  var getAdditionalSize = function getAdditionalSize(refs) {
@@ -54,15 +54,19 @@ var getCorrectMaxHeight = exports.getCorrectMaxHeight = function getCorrectMaxHe
54
54
  var correctMaxHeight = isStickyFooter ? maxHeightResize - popupFooterHeight : maxHeightResize;
55
55
  return correctMaxHeight;
56
56
  };
57
- var changeBodyPadding = exports.changeBodyPadding = function changeBodyPadding(isOpened) {
57
+ var changeBodyStyles = exports.changeBodyStyles = function changeBodyStyles(isOpened) {
58
58
  var windowWidth = window.innerWidth;
59
59
  var documentClientWidth = document.documentElement.clientWidth;
60
60
  var scrollBarWidth = windowWidth - documentClientWidth;
61
61
  var bodyEl = document.body;
62
62
  if (!isOpened) {
63
63
  bodyEl.style.paddingRight = '';
64
+ bodyEl.style.height = '';
65
+ bodyEl.style.overflow = '';
64
66
  return;
65
67
  }
68
+ bodyEl.style.height = '100%';
69
+ bodyEl.style.overflow = 'hidden';
66
70
  if (scrollBarWidth === 0) {
67
71
  return;
68
72
  }
@@ -0,0 +1 @@
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-multiple-select{-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--content);font-family:inherit;font-size:15px;line-height:24px;position:relative;width:100%}.mfui-9-multiple-select__control{background-color:var(--base);border:1px solid var(--spbSky2);border-radius:16px;display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;height:auto;min-height:60px;outline:none;padding:13px 15px;position:relative;-webkit-transition:border-color .3s;transition:border-color .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.mfui-9-multiple-select__control:hover{border-color:var(--content)}.mfui-9-multiple-select__input-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;overflow:hidden;width:100%}.mfui-9-multiple-select__arrow-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;outline:none;padding:0;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;border-radius:8px;justify-content:center;width:32px}.mfui-9-multiple-select__arrow-button:disabled{color:inherit;cursor:auto}.mfui-9-multiple-select__arrow-button:focus-visible{-webkit-animation:focus-outline-shrink .3s linear forwards;animation:focus-outline-shrink .3s linear forwards;outline-offset:2px}@-webkit-keyframes focus-outline-shrink{0%{outline:0 solid var(--137C)}to{outline:4px solid var(--137C)}}.mfui-9-multiple-select__arrow-button:focus{outline:none}.mfui-9-multiple-select__arrow-icon{height:auto;width:100%;fill:var(--spbSky2)}.mfui-9-multiple-select__control_active .mfui-9-multiple-select__arrow-icon{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:color,-webkit-transform;transition-property:color,-webkit-transform;transition-property:transform,color;transition-property:transform,color,-webkit-transform;fill:var(--content)}.mfui-9-multiple-select__input{display:block;position:relative;z-index:1;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;box-sizing:border-box;caret-color:var(--brandGreen);color:var(--content);flex-shrink:1;font-family:inherit;font-size:100%;line-height:24px;opacity:1;outline:none;overflow:auto;padding:0;resize:none;width:100px}.mfui-9-multiple-select__input::-webkit-input-placeholder{color:var(--spbSky3)}.mfui-9-multiple-select__input::-moz-placeholder{color:var(--spbSky3)}.mfui-9-multiple-select__input:-ms-input-placeholder{color:var(--spbSky3)}.mfui-9-multiple-select__input::-ms-input-placeholder{color:var(--spbSky3)}.mfui-9-multiple-select__input::placeholder{color:var(--spbSky3)}.mfui-9-multiple-select__tag{display:-webkit-box;display:-ms-flexbox;display:flex;gap:2px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--spbSky0);border:none;border-radius:8px;height:32px;max-width:100%;padding:4px 6px 4px 12px}.mfui-9-multiple-select__tag-title{display:block;font-size:15px;font-weight:400;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mfui-9-multiple-select__tag-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;outline:none;padding:0;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:8px;height:20px;min-width:20px;width:20px}.mfui-9-multiple-select__tag-button:disabled{color:inherit;cursor:auto}.mfui-9-multiple-select__tag-button:focus-visible{-webkit-animation:focus-outline-shrink .3s linear forwards;animation:focus-outline-shrink .3s linear forwards;outline-offset:2px}@keyframes focus-outline-shrink{0%{outline:0 solid var(--137C)}to{outline:4px solid var(--137C)}}.mfui-9-multiple-select__tag-button:focus{outline:none}.mfui-9-multiple-select__tag-button-icon{-webkit-transition:fill .3s;transition:fill .3s;fill:var(--spbSky3)}.mfui-9-multiple-select__tag-button:hover .mfui-9-multiple-select__tag-button-icon{fill:var(--content)}.mfui-9-multiple-select__notice-text{color:var(--spbSky3);font-size:12px;font-weight:400;line-height:18px;margin-top:8px}.mfui-9-multiple-select_open .mfui-9-multiple-select__control{border-color:var(--content)}.mfui-9-multiple-select_open .mfui-9-multiple-select__arrow-icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.mfui-9-multiple-select_disabled{pointer-events:none}.mfui-9-multiple-select_disabled .mfui-9-multiple-select__control{background-color:var(--spbSky0)}.mfui-9-multiple-select_disabled .mfui-9-multiple-select__input:not([placeholder]){width:0}.mfui-9-multiple-select_disabled .mfui-9-multiple-select__tag{background-color:var(--spbSky1)}.mfui-9-multiple-select_disabled .mfui-9-multiple-select__arrow-icon,.mfui-9-multiple-select_disabled .mfui-9-multiple-select__tag-button-icon{fill:var(--spbSky2)}
@@ -0,0 +1,63 @@
1
+ import * as React from 'react';
2
+ import './MultipleSelect.scss';
3
+ export type ItemValueType = number | string | undefined;
4
+ export type ItemType = {
5
+ /** Заголовок элемента */
6
+ title: string;
7
+ /** Уникальный идентификатор элемента */
8
+ value: ItemValueType;
9
+ };
10
+ export interface IMultipleSelectProps {
11
+ /** Дополнительный класс корневого элемента */
12
+ className?: string;
13
+ /** Элементы выпадающего списка */
14
+ items: ItemType[];
15
+ /** Список выбранных элементов */
16
+ selectedItems?: ItemType[];
17
+ /** Ограничение количества выбранных элементов */
18
+ selectLimit?: number;
19
+ /** Текст внутри поля по умолчанию */
20
+ placeholder?: string;
21
+ /** Максимальное вводимое количество символов */
22
+ maxLength?: number;
23
+ /** Текст при отсутствии результатов поиска */
24
+ notFoundText?: string;
25
+ /** Дополнительный текст под полем */
26
+ noticeText?: string;
27
+ /** Отключенное состояние */
28
+ disabled?: boolean;
29
+ /** Пользовательская функция поиска */
30
+ customSearchFilter?: (item: ItemType, searchQuery: string) => boolean;
31
+ /** Обработчик выбора элемента селекта */
32
+ onSelect?: (items: ItemType[]) => void;
33
+ /** Обработчик выхода из фокуса */
34
+ onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
35
+ /** Обработчик входа в фокус */
36
+ onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
37
+ /** Обработчик изменения поля при поиске */
38
+ onSearch?: (query: string) => void;
39
+ /** Использование функции debounce для onSearch */
40
+ searchDelay?: number;
41
+ /** Переводит компонент в контролируемое состояние */
42
+ isControlled?: boolean;
43
+ /** Дополнительные классы для внутренних элементов */
44
+ classes?: {
45
+ root?: string;
46
+ input?: string;
47
+ list?: string;
48
+ listItem?: string;
49
+ tag?: string;
50
+ tagButton?: string;
51
+ };
52
+ /** Дополнительные data атрибуты к внутренним элементам */
53
+ dataAttrs?: {
54
+ root?: Record<string, string>;
55
+ input?: Record<string, string>;
56
+ list?: Record<string, string>;
57
+ listItem?: Record<string, string>;
58
+ tag?: Record<string, string>;
59
+ tagButton?: Record<string, string>;
60
+ };
61
+ }
62
+ declare const MultipleSelect: React.FC<IMultipleSelectProps>;
63
+ export default MultipleSelect;