colibri-ui 0.7.126 → 0.7.128

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 (70) hide show
  1. package/Calendar/components/Month/Month.js +1 -1
  2. package/Calendar/index.module.css +2 -2
  3. package/Checkbox/Checkbox.module.css +4 -4
  4. package/Chip/Chip.module.css +13 -9
  5. package/Chip/index.js +25 -18
  6. package/Chip/index.props.d.ts +2 -2
  7. package/Datepicker/components/DatePicker/index.js +2 -2
  8. package/Datepicker/components/DatePicker/index.module.css +17 -17
  9. package/Datepicker/components/TimePicker/index.d.ts +0 -1
  10. package/Datepicker/components/TimePicker/index.js +4 -4
  11. package/Datepicker/components/TimePicker/index.module.css +19 -19
  12. package/Dropdown/index.js +7 -4
  13. package/Icons/CrossFill.d.ts +4 -0
  14. package/Icons/CrossFill.js +32 -0
  15. package/Icons/index.d.ts +1 -0
  16. package/Icons/index.js +2 -0
  17. package/Menu/components/MenuItem/index.js +0 -1
  18. package/MultiSelect/components/MenuOverlay/index.d.ts +19 -0
  19. package/MultiSelect/components/MenuOverlay/index.js +103 -0
  20. package/MultiSelect/components/MenuOverlay/index.module.css +9 -0
  21. package/MultiSelect/components/MenuOverlayItem/index.d.ts +14 -0
  22. package/MultiSelect/components/MenuOverlayItem/index.js +28 -0
  23. package/MultiSelect/index.d.ts +4 -0
  24. package/MultiSelect/index.js +174 -0
  25. package/MultiSelect/index.module.css +50 -0
  26. package/MultiSelect/index.props.d.ts +31 -0
  27. package/MultiSelect/package.json +6 -0
  28. package/MultiSelect/utils/index.d.ts +1 -0
  29. package/MultiSelect/utils/index.js +7 -0
  30. package/Select/index.js +2 -2
  31. package/Tooltip/index.js +4 -2
  32. package/base/InputRoot/index.js +4 -2
  33. package/base/InputRoot/index.props.d.ts +2 -1
  34. package/esm/Calendar/components/Month/Month.js +1 -1
  35. package/esm/Calendar/index.module.css +2 -2
  36. package/esm/Checkbox/Checkbox.module.css +4 -4
  37. package/esm/Chip/Chip.module.css +13 -9
  38. package/esm/Chip/index.js +25 -18
  39. package/esm/Chip/index.props.d.ts +2 -2
  40. package/esm/Datepicker/components/DatePicker/index.js +2 -2
  41. package/esm/Datepicker/components/DatePicker/index.module.css +17 -17
  42. package/esm/Datepicker/components/TimePicker/index.d.ts +0 -1
  43. package/esm/Datepicker/components/TimePicker/index.js +4 -4
  44. package/esm/Datepicker/components/TimePicker/index.module.css +19 -19
  45. package/esm/Dropdown/index.js +7 -4
  46. package/esm/Icons/CrossFill.d.ts +4 -0
  47. package/esm/Icons/CrossFill.js +24 -0
  48. package/esm/Icons/index.d.ts +1 -0
  49. package/esm/Icons/index.js +1 -0
  50. package/esm/Menu/components/MenuItem/index.js +0 -1
  51. package/esm/MultiSelect/components/MenuOverlay/index.d.ts +19 -0
  52. package/esm/MultiSelect/components/MenuOverlay/index.js +93 -0
  53. package/esm/MultiSelect/components/MenuOverlay/index.module.css +9 -0
  54. package/esm/MultiSelect/components/MenuOverlayItem/index.d.ts +14 -0
  55. package/esm/MultiSelect/components/MenuOverlayItem/index.js +20 -0
  56. package/esm/MultiSelect/index.d.ts +4 -0
  57. package/esm/MultiSelect/index.js +164 -0
  58. package/esm/MultiSelect/index.module.css +50 -0
  59. package/esm/MultiSelect/index.props.d.ts +31 -0
  60. package/esm/MultiSelect/utils/index.d.ts +1 -0
  61. package/esm/MultiSelect/utils/index.js +5 -0
  62. package/esm/Select/index.js +2 -2
  63. package/esm/Tooltip/index.js +4 -2
  64. package/esm/base/InputRoot/index.js +4 -2
  65. package/esm/base/InputRoot/index.props.d.ts +2 -1
  66. package/esm/index.d.ts +1 -0
  67. package/esm/index.js +2 -0
  68. package/index.d.ts +1 -0
  69. package/index.js +39 -35
  70. package/package.json +1 -1
@@ -77,7 +77,7 @@ var Month = function Month(props) {
77
77
  className: clx(styles__default.default.table)
78
78
  }, /*#__PURE__*/React__namespace.createElement("ul", {
79
79
  className: clx(styles__default.default.legend)
80
- }, tslib.__spreadArray([], Array(7), true).map(function (empty) {
80
+ }, tslib.__spreadArray([], Array(7), true).map(function (_) {
81
81
  var rest = [];
82
82
  for (var _i = 1; _i < arguments.length; _i++) {
83
83
  rest[_i - 1] = arguments[_i];
@@ -74,10 +74,10 @@
74
74
  }
75
75
 
76
76
  .month-control-next-arrow {
77
+ color: var(--palette-black);
77
78
  position: absolute;
78
- top: 16px;
79
79
  right: 16px;
80
- color: var(--palette-black);
80
+ top: 16px;
81
81
  transform: rotate(360deg);
82
82
  }
83
83
 
@@ -40,8 +40,8 @@
40
40
  }
41
41
  .checked::after {
42
42
  block-size: 8px;
43
- border-block-end: 2px solid var(--palette-black);
44
- border-inline-end: 2px solid var(--palette-black);
43
+ border-block-end: 2px solid var(--palette-white);
44
+ border-inline-end: 2px solid var(--palette-white);
45
45
  box-sizing: content-box;
46
46
  content: "";
47
47
  display: block;
@@ -57,8 +57,8 @@
57
57
  box-shadow: 0 0 0 2px var(--palette-alert);
58
58
  }
59
59
  .variant_primary_checked::after {
60
- border-block-end: 2px solid var(--palette-black);
61
- border-inline-end: 2px solid var(--palette-black);
60
+ border-block-end: 2px solid var(--palette-white);
61
+ border-inline-end: 2px solid var(--palette-white);
62
62
  }
63
63
 
64
64
  .control {
@@ -1,4 +1,4 @@
1
- .root {
1
+ .chip {
2
2
  cursor: pointer;
3
3
  display: inline-block;
4
4
  }
@@ -41,18 +41,18 @@
41
41
  }
42
42
  .inner[data-size=s] {
43
43
  border-radius: 32px;
44
- font-size: 15px;
45
- line-height: 32px;
44
+ font-size: 0.875rem;
45
+ line-height: 2.2;
46
46
  }
47
47
  .inner[data-size=m] {
48
48
  border-radius: 36px;
49
- font-size: 16px;
50
- line-height: 36px;
49
+ font-size: 1rem;
50
+ line-height: 2.3;
51
51
  }
52
52
  .inner[data-size=l] {
53
53
  border-radius: 44px;
54
- font-size: 18px;
55
- line-height: 44px;
54
+ font-size: 1.15rem;
55
+ line-height: 2.4;
56
56
  }
57
57
 
58
58
  .content {
@@ -60,7 +60,7 @@
60
60
  display: flex;
61
61
  justify-content: flex-start;
62
62
  max-width: 200px;
63
- padding: 0 20px;
63
+ padding: 0 1rem;
64
64
  user-select: none;
65
65
  }
66
66
 
@@ -72,8 +72,12 @@
72
72
 
73
73
  .icon-right {
74
74
  align-items: center;
75
+ color: var(--palette-bg-5);
75
76
  display: flex;
76
77
  justify-content: center;
77
78
  margin-left: -11px;
78
- padding-right: 18px;
79
+ padding-right: 0.8rem;
80
+ }
81
+ .icon-right:hover {
82
+ color: var(--palette-black);
79
83
  }
package/Chip/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var tslib = require('tslib');
5
6
  var React = require('react');
6
7
  var classNames = require('classnames/bind');
7
8
  var styles = require('./Chip.module.css');
@@ -13,34 +14,40 @@ var classNames__default = /*#__PURE__*/_interopDefault(classNames);
13
14
  var styles__default = /*#__PURE__*/_interopDefault(styles);
14
15
 
15
16
  var clx = classNames__default.default.bind(styles__default.default);
16
- var Chip = function Chip(props) {
17
- var children = props.children,
18
- iconOnRight = props.iconOnRight,
19
- isActive = props.isActive,
20
- onClick = props.onClick,
21
- onIconOnRightClick = props.onIconOnRightClick,
22
- _a = props.size,
23
- size = _a === void 0 ? "m" : _a,
24
- _b = props.testID,
25
- testID = _b === void 0 ? "chip" : _b;
26
- return /*#__PURE__*/React__default.default.createElement("span", {
27
- className: clx("root"),
17
+ var Chip = function Chip(_a) {
18
+ var children = _a.children,
19
+ iconEnd = _a.iconEnd,
20
+ isActive = _a.isActive,
21
+ onClick = _a.onClick,
22
+ onClickIcon = _a.onClickIcon,
23
+ _b = _a.size,
24
+ size = _b === void 0 ? "m" : _b,
25
+ _c = _a.testID,
26
+ testID = _c === void 0 ? "chip" : _c,
27
+ props = tslib.__rest(_a, ["children", "iconEnd", "isActive", "onClick", "onClickIcon", "size", "testID"]);
28
+ return /*#__PURE__*/React__default.default.createElement("span", tslib.__assign({
29
+ className: clx("chip"),
28
30
  "data-testid": testID
29
- }, /*#__PURE__*/React__default.default.createElement("span", {
31
+ }, props), /*#__PURE__*/React__default.default.createElement("span", {
30
32
  className: clx("inner", {
31
- inner_active: isActive,
32
- inner_inactive: !isActive
33
+ inner_active: iconEnd || isActive,
34
+ inner_inactive: !iconEnd && !isActive
33
35
  }),
34
36
  "data-size": size
35
37
  }, /*#__PURE__*/React__default.default.createElement("span", {
36
38
  className: clx("content"),
39
+ "aria-pressed": isActive,
40
+ role: "button",
41
+ tabIndex: 0,
37
42
  onClick: onClick
38
43
  }, /*#__PURE__*/React__default.default.createElement("span", {
39
44
  className: clx("content-inner")
40
- }, children)), iconOnRight && (/*#__PURE__*/React__default.default.createElement("span", {
45
+ }, children)), iconEnd && (/*#__PURE__*/React__default.default.createElement("span", {
41
46
  className: clx("icon-right"),
42
- onClick: onIconOnRightClick || onClick
43
- }, iconOnRight))));
47
+ role: "button",
48
+ tabIndex: 0,
49
+ onClick: onClickIcon
50
+ }, iconEnd))));
44
51
  };
45
52
 
46
53
  exports.default = Chip;
@@ -3,8 +3,8 @@ export type ChipProps = {
3
3
  size?: Size;
4
4
  testID?: string;
5
5
  isActive?: boolean;
6
- iconOnRight?: React.ReactNode;
6
+ iconEnd?: React.ReactNode;
7
7
  onClick?: () => void;
8
- onIconOnRightClick?: () => void;
8
+ onClickIcon?: () => void;
9
9
  };
10
10
  export {};
@@ -39,9 +39,9 @@ var DatePicker = function DatePicker(_a) {
39
39
  }
40
40
  })
41
41
  }, /*#__PURE__*/React__default.default.createElement("div", {
42
- className: clx(styles__default.default['input-container'], styles__default.default['input-date'], className)
42
+ className: clx(styles__default.default["input-container"], styles__default.default["input-date"], className)
43
43
  }, /*#__PURE__*/React__default.default.createElement("input", {
44
- className: clx(styles__default.default['input-field']),
44
+ className: clx(styles__default.default["input-field"]),
45
45
  tabIndex: 0,
46
46
  "aria-expanded": "false",
47
47
  "aria-haspopup": "true",
@@ -1,47 +1,47 @@
1
1
  .input-container {
2
- border-top-right-radius: 0.375rem;
2
+ align-items: center;
3
+ border-bottom: 1px solid var(--palette-bg-3);
3
4
  border-bottom-right-radius: 0.375rem;
4
- border-top: 1px solid var(--palette-bg-3);
5
5
  border-right: 1px solid var(--palette-bg-3);
6
- border-bottom: 1px solid var(--palette-bg-3);
6
+ border-top: 1px solid var(--palette-bg-3);
7
+ border-top-right-radius: 0.375rem;
8
+ box-sizing: border-box;
7
9
  display: flex;
8
- justify-content: center;
9
- align-items: center;
10
10
  height: 36px;
11
- box-sizing: border-box;
11
+ justify-content: center;
12
12
  }
13
13
 
14
14
  .input-field {
15
+ background: transparent;
16
+ border: none;
17
+ box-sizing: border-box;
18
+ font-size: 1em;
15
19
  height: 100%;
20
+ outline: none;
16
21
  padding: 4px;
17
22
  text-align: center;
18
- font-size: 1em;
19
- outline: none;
20
- border: none;
21
23
  width: 100%;
22
- background: transparent;
23
- box-sizing: border-box;
24
24
  }
25
25
 
26
26
  .input-date {
27
- position: relative;
28
27
  flex: 3;
28
+ position: relative;
29
29
  }
30
30
 
31
31
  .input-date:focus-within {
32
- border-top: 1px solid var(--palette-primary-3);
33
- border-right: 1px solid var(--palette-primary-3);
34
32
  border-bottom: 1px solid var(--palette-primary-3);
33
+ border-right: 1px solid var(--palette-primary-3);
34
+ border-top: 1px solid var(--palette-primary-3);
35
35
  box-shadow: 0 0 0 2px var(--palette-primary-2);
36
36
  }
37
37
 
38
38
  .input-date:focus-within::before {
39
+ background-color: var(--palette-primary-3);
39
40
  content: "";
40
- position: absolute;
41
41
  height: 100%;
42
- width: 1px;
43
- background-color: var(--palette-primary-3);
44
42
  left: 0;
43
+ position: absolute;
44
+ width: 1px;
45
45
  }
46
46
 
47
47
  .calendar {
@@ -2,7 +2,6 @@ import React from "react";
2
2
  interface TimePickerProps {
3
3
  className?: string;
4
4
  interval?: 5 | 10 | 15 | 30;
5
- value?: string;
6
5
  selectedTime?: string;
7
6
  }
8
7
  declare const _default: React.MemoExoticComponent<({ className, interval, selectedTime, }: TimePickerProps) => React.JSX.Element>;
@@ -48,9 +48,9 @@ var TimePicker = function TimePicker(_a) {
48
48
  options: options,
49
49
  fontSize: 14,
50
50
  customInputRoot: /*#__PURE__*/React__default.default.createElement("div", {
51
- className: clx(styles__default.default['input-container'], styles__default.default['input-time'])
51
+ className: clx(styles__default.default["input-container"], styles__default.default["input-time"])
52
52
  }, /*#__PURE__*/React__default.default.createElement("input", {
53
- className: clx(styles__default.default['input-field']),
53
+ className: clx(styles__default.default["input-field"]),
54
54
  tabIndex: 0,
55
55
  "aria-expanded": "false",
56
56
  "aria-haspopup": "true",
@@ -61,8 +61,8 @@ var TimePicker = function TimePicker(_a) {
61
61
  value: time
62
62
  })),
63
63
  value: time,
64
- onChange: function onChange(time) {
65
- return setTime(time);
64
+ onChange: function onChange(value) {
65
+ return setTime(value);
66
66
  }
67
67
  });
68
68
  };
@@ -1,26 +1,26 @@
1
1
  .input-container {
2
- border-top-left-radius: 0.375rem;
2
+ align-items: center;
3
+ border-bottom: 1px solid var(--palette-bg-3);
3
4
  border-bottom-left-radius: 0.375rem;
4
- border-top: 1px solid var(--palette-bg-3);
5
5
  border-left: 1px solid var(--palette-bg-3);
6
- border-bottom: 1px solid var(--palette-bg-3);
6
+ border-top: 1px solid var(--palette-bg-3);
7
+ border-top-left-radius: 0.375rem;
8
+ box-sizing: border-box;
7
9
  display: flex;
8
- justify-content: center;
9
- align-items: center;
10
10
  height: 36px;
11
- box-sizing: border-box;
11
+ justify-content: center;
12
12
  }
13
13
 
14
14
  .input-field {
15
+ background: transparent;
16
+ border: none;
17
+ box-sizing: border-box;
18
+ font-size: 1em;
15
19
  height: 100%;
20
+ outline: none;
16
21
  padding: 4px;
17
22
  text-align: center;
18
- font-size: 1em;
19
- outline: none;
20
- border: none;
21
23
  width: 100%;
22
- background: transparent;
23
- box-sizing: border-box;
24
24
  }
25
25
 
26
26
  .input-time {
@@ -28,29 +28,29 @@
28
28
  }
29
29
 
30
30
  .input-time::before {
31
+ background-color: var(--palette-bg-3);
31
32
  content: "";
32
- position: absolute;
33
33
  height: 100%;
34
- width: 1px;
35
- background-color: var(--palette-bg-3);
34
+ position: absolute;
36
35
  right: 0;
36
+ width: 1px;
37
37
  }
38
38
 
39
39
  .input-time:focus-within {
40
- border-top: 1px solid var(--palette-primary-3);
41
- border-left: 1px solid var(--palette-primary-3);
42
40
  border-bottom: 1px solid var(--palette-primary-3);
41
+ border-left: 1px solid var(--palette-primary-3);
42
+ border-top: 1px solid var(--palette-primary-3);
43
43
  box-shadow: 0 0 0 2px var(--palette-primary-2);
44
44
  z-index: 2;
45
45
  }
46
46
 
47
47
  .input-time:focus-within::before {
48
+ background-color: var(--palette-primary-3);
48
49
  content: "";
49
- position: absolute;
50
50
  height: 100%;
51
- width: 1px;
52
- background-color: var(--palette-primary-3);
51
+ position: absolute;
53
52
  right: 0;
53
+ width: 1px;
54
54
  }
55
55
 
56
56
  .select {
package/Dropdown/index.js CHANGED
@@ -60,15 +60,18 @@ var Dropdown = function Dropdown(_a) {
60
60
  enabled: preventOverflow
61
61
  }]
62
62
  }),
63
- styles = _m.styles,
63
+ popperStyles = _m.styles,
64
64
  attributes = _m.attributes,
65
65
  update = _m.update;
66
66
  var isNotComponent = typeof children === "string";
67
67
  var reference = React.useMemo(function () {
68
68
  return React.Children.only(isNotComponent ? /*#__PURE__*/React__default.default.createElement("button", null, children) : children);
69
69
  }, [children, isNotComponent]);
70
- var onToggle = React.useCallback(function (e) {
71
- e.stopPropagation();
70
+ var onToggle = React.useCallback(function (event) {
71
+ var _a;
72
+ if ((_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('[data-ignore-click="true"]')) {
73
+ return;
74
+ }
72
75
  setVisible(function (state) {
73
76
  return !state;
74
77
  });
@@ -134,7 +137,7 @@ var Dropdown = function Dropdown(_a) {
134
137
  ref: setPopperElement,
135
138
  "data-testid": "popper-container",
136
139
  className: clx("popper-container"),
137
- style: tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({}, styles.popper), {
140
+ style: tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({}, popperStyles.popper), {
138
141
  zIndex: zIndex,
139
142
  minWidth: controlElement === null || controlElement === void 0 ? void 0 : controlElement.offsetWidth
140
143
  }), samewidth && {
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import type { Props } from "./index.props";
3
+ declare const _default: React.ForwardRefExoticComponent<Props & React.RefAttributes<SVGSVGElement>>;
4
+ export default _default;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var React = require('react');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var React__default = /*#__PURE__*/_interopDefault(React);
11
+
12
+ var CrossFill = /*#__PURE__*/React.forwardRef(function (_a, ref) {
13
+ var _b = _a.fill,
14
+ fill = _b === void 0 ? "currentColor" : _b,
15
+ _c = _a.width,
16
+ width = _c === void 0 ? 24 : _c,
17
+ _d = _a.height,
18
+ height = _d === void 0 ? 24 : _d,
19
+ props = tslib.__rest(_a, ["fill", "width", "height"]);
20
+ return /*#__PURE__*/React__default.default.createElement("svg", tslib.__assign({
21
+ xmlns: "http://www.w3.org/2000/svg",
22
+ width: width,
23
+ height: height,
24
+ fill: fill,
25
+ viewBox: "0 0 24 24",
26
+ ref: ref
27
+ }, props), /*#__PURE__*/React__default.default.createElement("path", {
28
+ d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"
29
+ }));
30
+ });
31
+
32
+ exports.default = CrossFill;
package/Icons/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { default as ArrowNext } from "./ArrowNext";
2
2
  export { default as Cart } from "./Cart";
3
3
  export { default as Chevron } from "./Chevron";
4
4
  export { default as Close } from "./Close";
5
+ export { default as CrossFill } from "./CrossFill";
5
6
  export { default as Edit } from "./Edit";
6
7
  export { default as Exit } from "./Exit";
7
8
  export { default as EyeOpen } from "./EyeOpen";
package/Icons/index.js CHANGED
@@ -4,6 +4,7 @@ var ArrowNext = require('./ArrowNext.js');
4
4
  var Cart = require('./Cart.js');
5
5
  var Chevron = require('./Chevron.js');
6
6
  var Close = require('./Close.js');
7
+ var CrossFill = require('./CrossFill.js');
7
8
  var Edit = require('./Edit.js');
8
9
  var Exit = require('./Exit.js');
9
10
  var EyeOpen = require('./EyeOpen.js');
@@ -23,6 +24,7 @@ exports.ArrowNext = ArrowNext.default;
23
24
  exports.Cart = Cart.default;
24
25
  exports.Chevron = Chevron.default;
25
26
  exports.Close = Close.default;
27
+ exports.CrossFill = CrossFill.default;
26
28
  exports.Edit = Edit.default;
27
29
  exports.Exit = Exit.default;
28
30
  exports.EyeOpen = EyeOpen.default;
@@ -24,7 +24,6 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
24
24
  children = _a.children;
25
25
  return /*#__PURE__*/React__default.default.createElement("li", {
26
26
  ref: ref,
27
- "data-component": "menu-item",
28
27
  style: {
29
28
  backgroundColor: isSelected ? "var(--palette-bg-2, rgb(232, 240, 254))" : ""
30
29
  },
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import type { ReactNode } from "react";
3
+ import type { GroupProps } from "../../index.props";
4
+ export interface IOption {
5
+ selected: boolean;
6
+ value: string;
7
+ label: ReactNode;
8
+ disabled?: boolean;
9
+ }
10
+ type MenuOverlayGroup = Omit<GroupProps, "options" | "value"> & {
11
+ options: IOption[];
12
+ value: string;
13
+ };
14
+ type MenuOverlayProps = {
15
+ groups: MenuOverlayGroup[];
16
+ onChange: (key: string) => void;
17
+ };
18
+ declare const _default: React.MemoExoticComponent<({ groups, onChange }: MenuOverlayProps) => React.JSX.Element>;
19
+ export default _default;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classNames = require('classnames/bind');
7
+ var index$2 = require('../../../Menu/index.js');
8
+ var index$3 = require('../MenuOverlayItem/index.js');
9
+ var generateUniqID = require('../../../helpers/generateUniqID.js');
10
+ var index = require('../../../Typography/index.js');
11
+ var index$1 = require('../../../Separator/index.js');
12
+ var index$4 = require('../../utils/index.js');
13
+ var styles = require('./index.module.css');
14
+
15
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
+
17
+ var React__default = /*#__PURE__*/_interopDefault(React);
18
+ var classNames__default = /*#__PURE__*/_interopDefault(classNames);
19
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
20
+
21
+ var clx = classNames__default.default.bind(styles__default.default);
22
+ var OFFSET_ITEMS_COUNT = 2;
23
+ var MenuOverlay = function MenuOverlay(_a) {
24
+ var groups = _a.groups,
25
+ onChange = _a.onChange;
26
+ var refs = React.useRef({});
27
+ var _b = React.useState({
28
+ top: 0,
29
+ height: 0
30
+ }),
31
+ scrollView = _b[0],
32
+ setScrollView = _b[1];
33
+ var rootRef = React.useRef(null);
34
+ React.useLayoutEffect(function () {
35
+ if (!rootRef || !rootRef.current) {
36
+ return;
37
+ }
38
+ if (typeof rootRef.current.scrollTo === "function") {
39
+ rootRef.current.scrollTo({
40
+ top: scrollView.top - OFFSET_ITEMS_COUNT * scrollView.height
41
+ });
42
+ }
43
+ }, [scrollView, rootRef]);
44
+ function scrollToItem(key) {
45
+ var _a, _b, _c, _d;
46
+ if (!refs.current && !refs.current[key]) {
47
+ return;
48
+ }
49
+ var offsetTop = (_b = (_a = refs.current[key]) === null || _a === void 0 ? void 0 : _a.offsetTop) !== null && _b !== void 0 ? _b : 0;
50
+ var offsetHeight = (_d = (_c = refs.current[key]) === null || _c === void 0 ? void 0 : _c.offsetHeight) !== null && _d !== void 0 ? _d : 0;
51
+ setScrollView({
52
+ top: offsetTop,
53
+ height: offsetHeight
54
+ });
55
+ }
56
+ React.useLayoutEffect(function () {
57
+ var allOptions = groups.flatMap(function (group) {
58
+ return group.options.map(function (option) {
59
+ return {
60
+ option: option,
61
+ key: "group-".concat(group.value, "-option-").concat(option.value)
62
+ };
63
+ });
64
+ });
65
+ var firstSelectedOptionWithKey = allOptions.find(function (_a) {
66
+ var option = _a.option;
67
+ return option.selected;
68
+ });
69
+ if (firstSelectedOptionWithKey) {
70
+ var key = firstSelectedOptionWithKey.key;
71
+ scrollToItem(key);
72
+ }
73
+ }, []);
74
+ return /*#__PURE__*/React__default.default.createElement("div", {
75
+ ref: rootRef,
76
+ className: clx(styles__default.default.root)
77
+ }, groups.map(function (group, groupIndex) {
78
+ return /*#__PURE__*/React__default.default.createElement("div", {
79
+ key: generateUniqID.default(groupIndex)
80
+ }, /*#__PURE__*/React__default.default.createElement("div", {
81
+ className: clx(styles__default.default.title)
82
+ }, /*#__PURE__*/React__default.default.createElement(index.default, {
83
+ style: {
84
+ color: "var(--typography-secondary)"
85
+ },
86
+ size: "s"
87
+ }, group.title)), /*#__PURE__*/React__default.default.createElement(index$1.default, null), /*#__PURE__*/React__default.default.createElement(index$2.default, null, group.options.map(function (option, optionIndex) {
88
+ return /*#__PURE__*/React__default.default.createElement(index$3.default, {
89
+ ref: function ref(_ref) {
90
+ refs.current["group-".concat(group.value, "-option-").concat(option.value)] = _ref;
91
+ },
92
+ option: option,
93
+ key: generateUniqID.default(optionIndex),
94
+ onClick: function onClick() {
95
+ return onChange(index$4.createGroupOptionString(group.value, option.value));
96
+ }
97
+ });
98
+ })));
99
+ }));
100
+ };
101
+ var MenuOverlay$1 = /*#__PURE__*/React.memo(MenuOverlay);
102
+
103
+ exports.default = MenuOverlay$1;
@@ -0,0 +1,9 @@
1
+ .root {
2
+ max-height: 140px;
3
+ overflow-y: auto;
4
+ }
5
+
6
+ .title {
7
+ color: var(--palette-bg-4);
8
+ margin: 8px 6px;
9
+ }
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ type SelectItemProps = {
3
+ option: {
4
+ value: string;
5
+ label: React.ReactNode;
6
+ selected: boolean;
7
+ disabled?: boolean;
8
+ };
9
+ onClick?: () => void;
10
+ };
11
+ declare const _default: React.ForwardRefExoticComponent<SelectItemProps & {
12
+ children?: React.ReactNode | undefined;
13
+ } & React.RefAttributes<HTMLLIElement>>;
14
+ export default _default;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var index = require('../../../Menu/components/MenuItem/index.js');
7
+ var Check = require('../../../Icons/Check.js');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefault(React);
12
+
13
+ var SelectItem = function SelectItem(_a, ref) {
14
+ var option = _a.option,
15
+ onClick = _a.onClick;
16
+ return /*#__PURE__*/React__default.default.createElement(index.default, {
17
+ ref: ref,
18
+ onClick: onClick,
19
+ isSelected: option.selected,
20
+ disabled: option.disabled
21
+ }, option.label, option.selected && /*#__PURE__*/React__default.default.createElement(Check.default, {
22
+ width: 16,
23
+ height: 16
24
+ }));
25
+ };
26
+ var SelectItem$1 = /*#__PURE__*/React.forwardRef(SelectItem);
27
+
28
+ exports.default = SelectItem$1;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import type { MultiSelectProps } from "./index.props";
3
+ declare const MultiSelect: ({ className, groups, zIndex, fontSize, disabled, fullWidth, required, label, hint, error, size, placeholder, name, type, }: MultiSelectProps) => React.JSX.Element;
4
+ export default MultiSelect;