@alfalab/core-components-select 10.2.1 → 10.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 (112) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/Component.js +2 -1
  3. package/dist/components/arrow/Component.js +1 -1
  4. package/dist/components/arrow/index.css +3 -3
  5. package/dist/components/base-select/Component.js +5 -3
  6. package/dist/components/base-select/index.css +7 -7
  7. package/dist/components/base-select/index.js +1 -1
  8. package/dist/components/checkmark/Component.d.ts +1 -1
  9. package/dist/components/checkmark/Component.js +11 -5
  10. package/dist/components/checkmark/index.css +21 -9
  11. package/dist/components/checkmark/index.js +1 -0
  12. package/dist/components/field/Component.js +2 -2
  13. package/dist/components/field/index.css +9 -9
  14. package/dist/components/field/index.js +1 -1
  15. package/dist/components/index.js +2 -1
  16. package/dist/components/native-select/Component.js +1 -1
  17. package/dist/components/native-select/index.js +1 -1
  18. package/dist/components/optgroup/Component.js +1 -1
  19. package/dist/components/optgroup/index.css +6 -6
  20. package/dist/components/option/Component.js +7 -5
  21. package/dist/components/option/index.css +20 -20
  22. package/dist/components/option/index.js +2 -1
  23. package/dist/components/options-list/Component.js +1 -1
  24. package/dist/components/options-list/index.css +5 -5
  25. package/dist/components/virtual-options-list/Component.js +1 -1
  26. package/dist/components/virtual-options-list/index.css +11 -11
  27. package/dist/cssm/Component.js +1 -0
  28. package/dist/cssm/components/base-select/Component.js +3 -1
  29. package/dist/cssm/components/checkmark/Component.d.ts +1 -1
  30. package/dist/cssm/components/checkmark/Component.js +10 -4
  31. package/dist/cssm/components/checkmark/index.js +1 -0
  32. package/dist/cssm/components/checkmark/index.module.css +19 -7
  33. package/dist/cssm/components/index.js +1 -0
  34. package/dist/cssm/components/option/Component.js +5 -3
  35. package/dist/cssm/components/option/index.js +1 -0
  36. package/dist/cssm/index.js +1 -0
  37. package/dist/cssm/presets/index.js +1 -0
  38. package/dist/cssm/presets/useLazyLoading/hook.js +1 -0
  39. package/dist/cssm/presets/useSelectWithLoading/hook.js +1 -0
  40. package/dist/cssm/typings.d.ts +16 -0
  41. package/dist/esm/Component.js +2 -1
  42. package/dist/esm/components/arrow/Component.js +1 -1
  43. package/dist/esm/components/arrow/index.css +3 -3
  44. package/dist/esm/components/base-select/Component.js +5 -3
  45. package/dist/esm/components/base-select/index.css +7 -7
  46. package/dist/esm/components/base-select/index.js +1 -1
  47. package/dist/esm/components/checkmark/Component.d.ts +1 -1
  48. package/dist/esm/components/checkmark/Component.js +12 -6
  49. package/dist/esm/components/checkmark/index.css +21 -9
  50. package/dist/esm/components/checkmark/index.js +1 -0
  51. package/dist/esm/components/field/Component.js +2 -2
  52. package/dist/esm/components/field/index.css +9 -9
  53. package/dist/esm/components/field/index.js +1 -1
  54. package/dist/esm/components/index.js +2 -1
  55. package/dist/esm/components/native-select/Component.js +1 -1
  56. package/dist/esm/components/native-select/index.js +1 -1
  57. package/dist/esm/components/optgroup/Component.js +1 -1
  58. package/dist/esm/components/optgroup/index.css +6 -6
  59. package/dist/esm/components/option/Component.js +7 -5
  60. package/dist/esm/components/option/index.css +20 -20
  61. package/dist/esm/components/option/index.js +2 -1
  62. package/dist/esm/components/options-list/Component.js +1 -1
  63. package/dist/esm/components/options-list/index.css +5 -5
  64. package/dist/esm/components/virtual-options-list/Component.js +1 -1
  65. package/dist/esm/components/virtual-options-list/index.css +11 -11
  66. package/dist/esm/index.js +2 -1
  67. package/dist/esm/presets/index.js +2 -1
  68. package/dist/esm/presets/useLazyLoading/hook.js +3 -2
  69. package/dist/esm/presets/useLazyLoading/index.css +2 -2
  70. package/dist/esm/presets/useSelectWithLoading/hook.js +3 -2
  71. package/dist/esm/presets/useSelectWithLoading/index.css +2 -2
  72. package/dist/esm/{tslib.es6-88c0ba7a.d.ts → tslib.es6-5a8a0ede.d.ts} +0 -0
  73. package/dist/esm/{tslib.es6-88c0ba7a.js → tslib.es6-5a8a0ede.js} +0 -0
  74. package/dist/esm/typings.d.ts +16 -0
  75. package/dist/index.js +2 -1
  76. package/dist/modern/Component.js +1 -0
  77. package/dist/modern/components/arrow/Component.js +1 -1
  78. package/dist/modern/components/arrow/index.css +3 -3
  79. package/dist/modern/components/base-select/Component.js +3 -1
  80. package/dist/modern/components/base-select/index.css +7 -7
  81. package/dist/modern/components/checkmark/Component.d.ts +1 -1
  82. package/dist/modern/components/checkmark/Component.js +12 -4
  83. package/dist/modern/components/checkmark/index.css +21 -9
  84. package/dist/modern/components/checkmark/index.js +1 -0
  85. package/dist/modern/components/field/Component.js +1 -1
  86. package/dist/modern/components/field/index.css +9 -9
  87. package/dist/modern/components/index.js +1 -0
  88. package/dist/modern/components/optgroup/Component.js +1 -1
  89. package/dist/modern/components/optgroup/index.css +6 -6
  90. package/dist/modern/components/option/Component.js +6 -4
  91. package/dist/modern/components/option/index.css +20 -20
  92. package/dist/modern/components/option/index.js +1 -0
  93. package/dist/modern/components/options-list/Component.js +1 -1
  94. package/dist/modern/components/options-list/index.css +5 -5
  95. package/dist/modern/components/virtual-options-list/Component.js +1 -1
  96. package/dist/modern/components/virtual-options-list/index.css +11 -11
  97. package/dist/modern/index.js +1 -0
  98. package/dist/modern/presets/index.js +1 -0
  99. package/dist/modern/presets/useLazyLoading/hook.js +2 -1
  100. package/dist/modern/presets/useLazyLoading/index.css +2 -2
  101. package/dist/modern/presets/useSelectWithLoading/hook.js +2 -1
  102. package/dist/modern/presets/useSelectWithLoading/index.css +2 -2
  103. package/dist/modern/typings.d.ts +16 -0
  104. package/dist/presets/index.js +2 -1
  105. package/dist/presets/useLazyLoading/hook.js +3 -2
  106. package/dist/presets/useLazyLoading/index.css +2 -2
  107. package/dist/presets/useSelectWithLoading/hook.js +3 -2
  108. package/dist/presets/useSelectWithLoading/index.css +2 -2
  109. package/dist/{tslib.es6-f331eccd.d.ts → tslib.es6-f6070e97.d.ts} +0 -0
  110. package/dist/{tslib.es6-f331eccd.js → tslib.es6-f6070e97.js} +0 -0
  111. package/dist/typings.d.ts +16 -0
  112. package/package.json +4 -3
@@ -1,4 +1,4 @@
1
- /* hash: 52dbc */
1
+ /* hash: y8oeg */
2
2
  :root {
3
3
  --color-light-text-secondary: #546272;
4
4
  }
@@ -26,17 +26,17 @@
26
26
 
27
27
  /* optgroup */
28
28
  }
29
- .select__optionsList_1nadr {
29
+ .select__optionsList_rxceg {
30
30
  overflow: auto;
31
31
  width: 100%;
32
32
  outline: none;
33
33
  box-sizing: border-box;
34
34
  }
35
- .select__emptyPlaceholder_1nadr {
35
+ .select__emptyPlaceholder_rxceg {
36
36
  padding: var(--gap-m) var(--gap-s);
37
37
  color: var(--select-options-list-empty-placeholder-color);
38
38
  }
39
- .select__l_1nadr .select__emptyPlaceholder_1nadr,
40
- .select__xl_1nadr .select__emptyPlaceholder_1nadr {
39
+ .select__l_rxceg .select__emptyPlaceholder_rxceg,
40
+ .select__xl_rxceg .select__emptyPlaceholder_rxceg {
41
41
  padding: var(--gap-xl) var(--gap-m);
42
42
  }
@@ -13,7 +13,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
13
13
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
14
  var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
15
15
 
16
- var styles = {"virtualOptionsList":"select__virtualOptionsList_tdkkj","inner":"select__inner_tdkkj","virtualRow":"select__virtualRow_tdkkj","highlighted":"select__highlighted_tdkkj","emptyPlaceholder":"select__emptyPlaceholder_tdkkj","l":"select__l_tdkkj","xl":"select__xl_tdkkj"};
16
+ var styles = {"virtualOptionsList":"select__virtualOptionsList_16vz3","inner":"select__inner_16vz3","virtualRow":"select__virtualRow_16vz3","highlighted":"select__highlighted_16vz3","emptyPlaceholder":"select__emptyPlaceholder_16vz3","l":"select__l_16vz3","xl":"select__xl_16vz3"};
17
17
  require('./index.css')
18
18
 
19
19
  /* eslint-disable react-hooks/exhaustive-deps */
@@ -1,4 +1,4 @@
1
- /* hash: 10c3n */
1
+ /* hash: 75ska */
2
2
  :root {
3
3
  --color-light-border-primary: #dbdee1;
4
4
  --color-light-text-secondary: #546272;
@@ -32,24 +32,24 @@
32
32
 
33
33
  /* optgroup */
34
34
  }
35
- .select__virtualOptionsList_tdkkj {
35
+ .select__virtualOptionsList_16vz3 {
36
36
  overflow: auto;
37
37
  width: 100%;
38
38
  outline: none;
39
39
  box-sizing: border-box;
40
40
  position: relative;
41
41
  }
42
- .select__inner_tdkkj {
42
+ .select__inner_16vz3 {
43
43
  position: relative;
44
44
  width: 100%;
45
45
  }
46
- .select__virtualRow_tdkkj {
46
+ .select__virtualRow_16vz3 {
47
47
  position: absolute;
48
48
  top: 0;
49
49
  left: 0;
50
50
  width: 100%
51
51
  }
52
- .select__virtualRow_tdkkj:before {
52
+ .select__virtualRow_16vz3:before {
53
53
  content: '';
54
54
  position: absolute;
55
55
  z-index: 1;
@@ -60,18 +60,18 @@
60
60
  background: var(--select-option-divider-background);
61
61
  display: var(--select-option-divider-display);
62
62
  }
63
- .select__virtualRow_tdkkj:first-child:before {
63
+ .select__virtualRow_16vz3:first-child:before {
64
64
  display: none;
65
65
  }
66
- .select__highlighted_tdkkj:before,
67
- .select__highlighted_tdkkj + .select__virtualRow_tdkkj:before {
66
+ .select__highlighted_16vz3:before,
67
+ .select__highlighted_16vz3 + .select__virtualRow_16vz3:before {
68
68
  display: none;
69
69
  }
70
- .select__emptyPlaceholder_tdkkj {
70
+ .select__emptyPlaceholder_16vz3 {
71
71
  padding: var(--gap-m) var(--gap-s);
72
72
  color: var(--select-options-list-empty-placeholder-color);
73
73
  }
74
- .select__l_tdkkj .select__emptyPlaceholder_tdkkj,
75
- .select__xl_tdkkj .select__emptyPlaceholder_tdkkj {
74
+ .select__l_16vz3 .select__emptyPlaceholder_16vz3,
75
+ .select__xl_16vz3 .select__emptyPlaceholder_16vz3 {
76
76
  padding: var(--gap-xl) var(--gap-m);
77
77
  }
@@ -18,6 +18,7 @@ require('./components/optgroup/index.module.css');
18
18
  var components_optgroup_Component = require('./components/optgroup/Component.js');
19
19
  require('./components/options-list/index.module.css');
20
20
  var components_optionsList_Component = require('./components/options-list/Component.js');
21
+ require('@alfalab/core-components-checkbox/dist/cssm');
21
22
  require('./components/checkmark/index.module.css');
22
23
  require('./components/checkmark/Component.js');
23
24
  require('./components/option/index.module.css');
@@ -169,13 +169,15 @@ var BaseSelect = React.forwardRef(function (_a, ref) {
169
169
  item: option,
170
170
  disabled: option.disabled,
171
171
  onMouseDown: function (event) { return event.preventDefault(); },
172
- }), index: index,
172
+ }), multiple: multiple,
173
+ index: index,
173
174
  option: option, size: optionsSize, disabled: option.disabled, highlighted: index === highlightedIndex, selected: selectedItems.includes(option), dataTestId: getDataTestId(dataTestId, 'option') }))));
174
175
  }, [
175
176
  Option,
176
177
  optionProps,
177
178
  optionClassName,
178
179
  getItemProps,
180
+ multiple,
179
181
  optionsSize,
180
182
  highlightedIndex,
181
183
  selectedItems,
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { CheckmarkProps } from "../../typings";
3
- declare const Checkmark: ({ selected }: CheckmarkProps) => JSX.Element;
3
+ declare const Checkmark: ({ selected, className, multiple, position, }: CheckmarkProps) => JSX.Element;
4
4
  export { Checkmark };
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var cn = require('classnames');
7
+ var coreComponentsCheckbox = require('@alfalab/core-components-checkbox/dist/cssm');
7
8
  var styles = require('./index.module.css');
8
9
 
9
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -14,10 +15,15 @@ var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
14
15
 
15
16
  var Checkmark = function (_a) {
16
17
  var _b;
17
- var selected = _a.selected;
18
- return (React__default['default'].createElement("span", { className: cn__default['default'](styles__default['default'].checkmark, (_b = {},
19
- _b[styles__default['default'].selected] = selected,
20
- _b)) }));
18
+ var selected = _a.selected, className = _a.className, multiple = _a.multiple, _c = _a.position, position = _c === void 0 ? 'before' : _c;
19
+ var single = !multiple || position === 'after';
20
+ var checkmarkClassNames = cn__default['default'](styles__default['default'].checkmark, className, styles__default['default'][position], (_b = {},
21
+ _b[styles__default['default'].multiple] = !single,
22
+ _b[styles__default['default'].single] = single,
23
+ _b[styles__default['default'].selected] = selected,
24
+ _b));
25
+ var handleCheckboxClick = React.useCallback(function (event) { return event.stopPropagation(); }, []);
26
+ return single ? (React__default['default'].createElement("span", { className: checkmarkClassNames })) : (React__default['default'].createElement(coreComponentsCheckbox.Checkbox, { checked: selected, className: checkmarkClassNames, size: "m", onClick: handleCheckboxClick }));
21
27
  };
22
28
 
23
29
  exports.Checkmark = Checkmark;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('react');
6
6
  require('classnames');
7
+ require('@alfalab/core-components-checkbox/dist/cssm');
7
8
  require('./index.module.css');
8
9
  var components_checkmark_Component = require('./Component.js');
9
10
 
@@ -11,6 +11,7 @@
11
11
  }
12
12
  :root {
13
13
  --gap-xs: 8px;
14
+ --gap-s: 12px;
14
15
  }
15
16
  :root {
16
17
  --border-radius-circle: 50%;
@@ -25,7 +26,8 @@
25
26
 
26
27
  --select-checkmark-margin: 0 var(--gap-xs) 0 0;
27
28
  --select-checkmark-size: 4px;
28
- --select-checkmark-order: 0;
29
+ --select-checkmark-before-display: 'flex';
30
+ --select-checkmark-after-display: none;
29
31
  --select-checkmark-unselected-opacity: 0;
30
32
  --select-checkmark-background: var(--color-light-graphic-primary);
31
33
  --select-checkmark-border-radius: var(--border-radius-circle);
@@ -33,19 +35,29 @@
33
35
  /* optgroup */
34
36
  }
35
37
  .checkmark {
38
+ flex-shrink: 0;
39
+ margin: var(--select-checkmark-margin);
40
+ }
41
+ .single {
36
42
  display: flex;
37
43
  align-items: center;
38
44
  justify-content: center;
39
45
  opacity: var(--select-checkmark-unselected-opacity);
40
- flex-shrink: 0;
41
46
  background: var(--select-checkmark-background);
42
47
  background-size: cover;
43
48
  border-radius: var(--select-checkmark-border-radius);
44
- margin: var(--select-checkmark-margin);
45
- order: var(--select-checkmark-order);
46
49
  width: var(--select-checkmark-size);
47
- height: var(--select-checkmark-size);
50
+ height: var(--select-checkmark-size)
51
+ }
52
+ .single.selected {
53
+ opacity: 1;
54
+ }
55
+ .before {
56
+ display: var(--select-checkmark-before-display)
48
57
  }
49
- .selected {
50
- opacity: 1;
58
+ .before.multiple {
59
+ margin-right: var(--gap-s);
60
+ }
61
+ .after {
62
+ display: var(--select-checkmark-after-display);
51
63
  }
@@ -18,6 +18,7 @@ require('./optgroup/index.module.css');
18
18
  var components_optgroup_Component = require('./optgroup/Component.js');
19
19
  require('./options-list/index.module.css');
20
20
  var components_optionsList_Component = require('./options-list/Component.js');
21
+ require('@alfalab/core-components-checkbox/dist/cssm');
21
22
  require('./checkmark/index.module.css');
22
23
  require('./checkmark/Component.js');
23
24
  require('./option/index.module.css');
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('../../tslib.es6-f8106a15.js');
6
6
  var React = require('react');
7
7
  var cn = require('classnames');
8
+ require('@alfalab/core-components-checkbox/dist/cssm');
8
9
  require('../checkmark/index.module.css');
9
10
  var components_checkmark_Component = require('../checkmark/Component.js');
10
11
  var styles = require('./index.module.css');
@@ -17,17 +18,18 @@ var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
17
18
 
18
19
  var Option = function (_a) {
19
20
  var _b, _c;
20
- var _d = _a.size, size = _d === void 0 ? 's' : _d, className = _a.className, option = _a.option, children = _a.children, selected = _a.selected, highlighted = _a.highlighted, disabled = _a.disabled, _e = _a.Checkmark, Checkmark = _e === void 0 ? components_checkmark_Component.Checkmark : _e, innerProps = _a.innerProps, dataTestId = _a.dataTestId;
21
+ var _d = _a.size, size = _d === void 0 ? 's' : _d, className = _a.className, option = _a.option, children = _a.children, selected = _a.selected, highlighted = _a.highlighted, disabled = _a.disabled, multiple = _a.multiple, _e = _a.Checkmark, Checkmark = _e === void 0 ? components_checkmark_Component.Checkmark : _e, innerProps = _a.innerProps, dataTestId = _a.dataTestId;
21
22
  var content = children || option.content || option.key;
22
23
  return (React__default['default'].createElement("div", tslib_es6.__assign({}, innerProps, { className: cn__default['default'](styles__default['default'].option, styles__default['default'][size], className, (_b = {},
23
24
  _b[styles__default['default'].highlighted] = highlighted,
24
25
  _b[styles__default['default'].selected] = selected,
25
26
  _b[styles__default['default'].disabled] = disabled,
26
27
  _b)), "data-test-id": dataTestId }),
27
- Checkmark && React__default['default'].createElement(Checkmark, { selected: selected }),
28
+ Checkmark && React__default['default'].createElement(Checkmark, { selected: selected, multiple: multiple, position: 'before' }),
28
29
  React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].content, (_c = {},
29
30
  _c[styles__default['default'].textContent] = !React.isValidElement(content),
30
- _c)) }, content)));
31
+ _c)) }, content),
32
+ Checkmark && React__default['default'].createElement(Checkmark, { selected: selected, multiple: multiple, position: 'after' })));
31
33
  };
32
34
 
33
35
  exports.Option = Option;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('../../tslib.es6-f8106a15.js');
6
6
  require('react');
7
7
  require('classnames');
8
+ require('@alfalab/core-components-checkbox/dist/cssm');
8
9
  require('../checkmark/index.module.css');
9
10
  require('../checkmark/Component.js');
10
11
  require('./index.module.css');
@@ -18,6 +18,7 @@ require('./components/optgroup/index.module.css');
18
18
  var components_optgroup_Component = require('./components/optgroup/Component.js');
19
19
  require('./components/options-list/index.module.css');
20
20
  var components_optionsList_Component = require('./components/options-list/Component.js');
21
+ require('@alfalab/core-components-checkbox/dist/cssm');
21
22
  require('./components/checkmark/index.module.css');
22
23
  require('./components/checkmark/Component.js');
23
24
  require('./components/option/index.module.css');
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('../tslib.es6-f8106a15.js');
6
6
  require('react');
7
7
  require('classnames');
8
+ require('@alfalab/core-components-checkbox/dist/cssm');
8
9
  require('../components/checkmark/index.module.css');
9
10
  require('../components/checkmark/Component.js');
10
11
  require('../components/option/index.module.css');
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('../../tslib.es6-f8106a15.js');
6
6
  var React = require('react');
7
7
  require('classnames');
8
+ require('@alfalab/core-components-checkbox/dist/cssm');
8
9
  require('../../components/checkmark/index.module.css');
9
10
  require('../../components/checkmark/Component.js');
10
11
  require('../../components/option/index.module.css');
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('../../tslib.es6-f8106a15.js');
6
6
  var React = require('react');
7
7
  require('classnames');
8
+ require('@alfalab/core-components-checkbox/dist/cssm');
8
9
  require('../../components/checkmark/index.module.css');
9
10
  require('../../components/checkmark/Component.js');
10
11
  require('../../components/option/index.module.css');
@@ -414,6 +414,10 @@ type OptionProps = {
414
414
  * Флаг, заблокирован ли данный пункт
415
415
  */
416
416
  disabled?: boolean;
417
+ /**
418
+ * Флаг множественного выбора
419
+ */
420
+ multiple?: boolean;
417
421
  /**
418
422
  * Компонент пункта меню
419
423
  */
@@ -438,5 +442,17 @@ type CheckmarkProps = {
438
442
  * Флаг, данный пункт выбран
439
443
  */
440
444
  selected?: boolean;
445
+ /**
446
+ * Дополнительный класс
447
+ */
448
+ className?: string;
449
+ /**
450
+ * Флаг множественного выбора
451
+ */
452
+ multiple?: boolean;
453
+ /**
454
+ * Расположение отметки
455
+ */
456
+ position?: 'before' | 'after';
441
457
  };
442
458
  export { OptionShape, GroupShape, BaseSelectProps, FieldProps, ArrowProps, OptionsListProps, OptgroupProps, OptionProps, CheckmarkProps };
@@ -1,4 +1,4 @@
1
- import { _ as __rest, a as __assign } from './tslib.es6-88c0ba7a.js';
1
+ import { _ as __rest, a as __assign } from './tslib.es6-5a8a0ede.js';
2
2
  import React, { forwardRef } from 'react';
3
3
  import 'classnames';
4
4
  import '@alfalab/hooks';
@@ -10,6 +10,7 @@ import { Arrow } from './components/arrow/Component.js';
10
10
  import 'react-merge-refs';
11
11
  import { Optgroup } from './components/optgroup/Component.js';
12
12
  import { OptionsList } from './components/options-list/Component.js';
13
+ import '@alfalab/core-components-checkbox/dist/esm';
13
14
  import './components/checkmark/Component.js';
14
15
  import { Option } from './components/option/Component.js';
15
16
  import 'resize-observer';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import cn from 'classnames';
3
3
  import { ChevronDownMIcon } from '@alfalab/icons-glyph/ChevronDownMIcon';
4
4
 
5
- var styles = {"arrow":"select__arrow_8ck3x","open":"select__open_8ck3x"};
5
+ var styles = {"arrow":"select__arrow_1dm1c","open":"select__open_1dm1c"};
6
6
  require('./index.css')
7
7
 
8
8
  var Arrow = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1gitx */
1
+ /* hash: nciuq */
2
2
  :root {
3
3
  --color-light-graphic-primary: #0b1f35;
4
4
  }
@@ -24,7 +24,7 @@
24
24
 
25
25
  /* optgroup */
26
26
  }
27
- .select__arrow_8ck3x {
27
+ .select__arrow_1dm1c {
28
28
  display: block;
29
29
  width: 24px;
30
30
  height: 24px;
@@ -32,6 +32,6 @@
32
32
 
33
33
  transition: transform 0.15s ease-in-out, opacity 0.2s ease;
34
34
  }
35
- .select__open_8ck3x {
35
+ .select__open_1dm1c {
36
36
  transform: var(--arrow-transform);
37
37
  }
@@ -1,4 +1,4 @@
1
- import { a as __assign, b as __spreadArrays, _ as __rest } from '../../tslib.es6-88c0ba7a.js';
1
+ import { a as __assign, b as __spreadArrays, _ as __rest } from '../../tslib.es6-5a8a0ede.js';
2
2
  import React, { forwardRef, useRef, useMemo, useCallback, useEffect, useLayoutEffect } from 'react';
3
3
  import cn from 'classnames';
4
4
  import { processOptions } from '../../utils.js';
@@ -13,7 +13,7 @@ var getDataTestId = function (dataTestId, element) {
13
13
  return dataTestId ? "" + dataTestId + elementPart : undefined;
14
14
  };
15
15
 
16
- var styles = {"component":"select__component_pra6p","popoverInner":"select__popoverInner_pra6p","optionsList":"select__optionsList_pra6p","nativeSelect":"select__nativeSelect_pra6p","block":"select__block_pra6p"};
16
+ var styles = {"component":"select__component_1l4bj","popoverInner":"select__popoverInner_1l4bj","optionsList":"select__optionsList_1l4bj","nativeSelect":"select__nativeSelect_1l4bj","block":"select__block_1l4bj"};
17
17
  require('./index.css')
18
18
 
19
19
  var BaseSelect = forwardRef(function (_a, ref) {
@@ -160,13 +160,15 @@ var BaseSelect = forwardRef(function (_a, ref) {
160
160
  item: option,
161
161
  disabled: option.disabled,
162
162
  onMouseDown: function (event) { return event.preventDefault(); },
163
- }), index: index,
163
+ }), multiple: multiple,
164
+ index: index,
164
165
  option: option, size: optionsSize, disabled: option.disabled, highlighted: index === highlightedIndex, selected: selectedItems.includes(option), dataTestId: getDataTestId(dataTestId, 'option') }))));
165
166
  }, [
166
167
  Option,
167
168
  optionProps,
168
169
  optionClassName,
169
170
  getItemProps,
171
+ multiple,
170
172
  optionsSize,
171
173
  highlightedIndex,
172
174
  selectedItems,
@@ -1,4 +1,4 @@
1
- /* hash: 1mv2h */
1
+ /* hash: torem */
2
2
  :root {
3
3
  --color-light-bg-primary: #fff;
4
4
  }
@@ -28,12 +28,12 @@
28
28
 
29
29
  /* optgroup */
30
30
  }
31
- .select__component_pra6p {
31
+ .select__component_1l4bj {
32
32
  width: max-content;
33
33
  position: relative;
34
34
  outline: 0;
35
35
  }
36
- .select__popoverInner_pra6p {
36
+ .select__popoverInner_1l4bj {
37
37
  padding-top: var(--select-options-list-offset);
38
38
  padding-bottom: var(--select-options-list-offset);
39
39
  box-shadow: none;
@@ -42,7 +42,7 @@
42
42
  border-radius: 0;
43
43
  position: relative;
44
44
  }
45
- .select__optionsList_pra6p {
45
+ .select__optionsList_1l4bj {
46
46
  padding-top: var(--select-options-list-top-padding);
47
47
  padding-bottom: var(--select-options-list-bottom-padding);
48
48
  box-shadow: var(--select-options-list-box-shadow);
@@ -51,7 +51,7 @@
51
51
  overflow: hidden;
52
52
  will-change: transform;
53
53
  }
54
- .select__nativeSelect_pra6p {
54
+ .select__nativeSelect_1l4bj {
55
55
  opacity: 0;
56
56
  overflow: hidden;
57
57
  position: absolute;
@@ -65,12 +65,12 @@
65
65
  cursor: pointer;
66
66
  z-index: 1;
67
67
  }
68
- .select__block_pra6p {
68
+ .select__block_1l4bj {
69
69
  width: 100%;
70
70
  }
71
71
  /* width: max-content; fix for IE */
72
72
  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
73
- .select__component_pra6p {
73
+ .select__component_1l4bj {
74
74
  float: left;
75
75
  clear: left;
76
76
  }
@@ -1,4 +1,4 @@
1
- import '../../tslib.es6-88c0ba7a.js';
1
+ import '../../tslib.es6-5a8a0ede.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
4
  import '../../utils.js';
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { CheckmarkProps } from "../../typings";
3
- declare const Checkmark: ({ selected }: CheckmarkProps) => JSX.Element;
3
+ declare const Checkmark: ({ selected, className, multiple, position, }: CheckmarkProps) => JSX.Element;
4
4
  export { Checkmark };
@@ -1,15 +1,21 @@
1
- import React from 'react';
1
+ import React, { useCallback } from 'react';
2
2
  import cn from 'classnames';
3
+ import { Checkbox } from '@alfalab/core-components-checkbox/dist/esm';
3
4
 
4
- var styles = {"checkmark":"select__checkmark_bsvv9","selected":"select__selected_bsvv9"};
5
+ var styles = {"checkmark":"select__checkmark_pbaeg","single":"select__single_pbaeg","selected":"select__selected_pbaeg","before":"select__before_pbaeg","multiple":"select__multiple_pbaeg","after":"select__after_pbaeg"};
5
6
  require('./index.css')
6
7
 
7
8
  var Checkmark = function (_a) {
8
9
  var _b;
9
- var selected = _a.selected;
10
- return (React.createElement("span", { className: cn(styles.checkmark, (_b = {},
11
- _b[styles.selected] = selected,
12
- _b)) }));
10
+ var selected = _a.selected, className = _a.className, multiple = _a.multiple, _c = _a.position, position = _c === void 0 ? 'before' : _c;
11
+ var single = !multiple || position === 'after';
12
+ var checkmarkClassNames = cn(styles.checkmark, className, styles[position], (_b = {},
13
+ _b[styles.multiple] = !single,
14
+ _b[styles.single] = single,
15
+ _b[styles.selected] = selected,
16
+ _b));
17
+ var handleCheckboxClick = useCallback(function (event) { return event.stopPropagation(); }, []);
18
+ return single ? (React.createElement("span", { className: checkmarkClassNames })) : (React.createElement(Checkbox, { checked: selected, className: checkmarkClassNames, size: "m", onClick: handleCheckboxClick }));
13
19
  };
14
20
 
15
21
  export { Checkmark };
@@ -1,4 +1,4 @@
1
- /* hash: irey4 */
1
+ /* hash: 1om7w */
2
2
  :root {
3
3
  --color-light-graphic-primary: #0b1f35;
4
4
  }
@@ -12,6 +12,7 @@
12
12
  }
13
13
  :root {
14
14
  --gap-xs: 8px;
15
+ --gap-s: 12px;
15
16
  }
16
17
  :root {
17
18
  --border-radius-circle: 50%;
@@ -26,27 +27,38 @@
26
27
 
27
28
  --select-checkmark-margin: 0 var(--gap-xs) 0 0;
28
29
  --select-checkmark-size: 4px;
29
- --select-checkmark-order: 0;
30
+ --select-checkmark-before-display: 'flex';
31
+ --select-checkmark-after-display: none;
30
32
  --select-checkmark-unselected-opacity: 0;
31
33
  --select-checkmark-background: var(--color-light-graphic-primary);
32
34
  --select-checkmark-border-radius: var(--border-radius-circle);
33
35
 
34
36
  /* optgroup */
35
37
  }
36
- .select__checkmark_bsvv9 {
38
+ .select__checkmark_pbaeg {
39
+ flex-shrink: 0;
40
+ margin: var(--select-checkmark-margin);
41
+ }
42
+ .select__single_pbaeg {
37
43
  display: flex;
38
44
  align-items: center;
39
45
  justify-content: center;
40
46
  opacity: var(--select-checkmark-unselected-opacity);
41
- flex-shrink: 0;
42
47
  background: var(--select-checkmark-background);
43
48
  background-size: cover;
44
49
  border-radius: var(--select-checkmark-border-radius);
45
- margin: var(--select-checkmark-margin);
46
- order: var(--select-checkmark-order);
47
50
  width: var(--select-checkmark-size);
48
- height: var(--select-checkmark-size);
51
+ height: var(--select-checkmark-size)
52
+ }
53
+ .select__single_pbaeg.select__selected_pbaeg {
54
+ opacity: 1;
55
+ }
56
+ .select__before_pbaeg {
57
+ display: var(--select-checkmark-before-display)
49
58
  }
50
- .select__selected_bsvv9 {
51
- opacity: 1;
59
+ .select__before_pbaeg.select__multiple_pbaeg {
60
+ margin-right: var(--gap-s);
61
+ }
62
+ .select__after_pbaeg {
63
+ display: var(--select-checkmark-after-display);
52
64
  }
@@ -1,3 +1,4 @@
1
1
  import 'react';
2
2
  import 'classnames';
3
+ import '@alfalab/core-components-checkbox/dist/esm';
3
4
  export { Checkmark } from './Component.js';
@@ -1,11 +1,11 @@
1
- import { _ as __rest, a as __assign } from '../../tslib.es6-88c0ba7a.js';
1
+ import { _ as __rest, a as __assign } from '../../tslib.es6-5a8a0ede.js';
2
2
  import React, { useState, useRef, useCallback } from 'react';
3
3
  import cn from 'classnames';
4
4
  import { useFocus } from '@alfalab/hooks';
5
5
  import { FormControl } from '@alfalab/core-components-form-control/dist/esm';
6
6
  import { joinOptions } from '../../utils.js';
7
7
 
8
- var styles = {"component":"select__component_it3zx","field":"select__field_it3zx","disabled":"select__disabled_it3zx","arrow":"select__arrow_it3zx","placeholder":"select__placeholder_it3zx","contentWrapper":"select__contentWrapper_it3zx","value":"select__value_it3zx","focusVisible":"select__focusVisible_it3zx"};
8
+ var styles = {"component":"select__component_10xqh","field":"select__field_10xqh","disabled":"select__disabled_10xqh","arrow":"select__arrow_10xqh","placeholder":"select__placeholder_10xqh","contentWrapper":"select__contentWrapper_10xqh","value":"select__value_10xqh","focusVisible":"select__focusVisible_10xqh"};
9
9
  require('./index.css')
10
10
 
11
11
  var Field = function (_a) {