@alfalab/core-components-select 17.3.4 → 17.4.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 (138) hide show
  1. package/components/arrow/Component.js +1 -1
  2. package/components/arrow/index.css +3 -3
  3. package/components/base-checkmark/Component.js +1 -1
  4. package/components/base-checkmark/index.css +4 -4
  5. package/components/base-option/Component.js +1 -1
  6. package/components/base-option/index.css +13 -13
  7. package/components/base-select/Component.js +4 -4
  8. package/components/base-select/index.css +11 -11
  9. package/components/base-select/mobile.css +12 -12
  10. package/components/checkmark/Component.js +1 -1
  11. package/components/checkmark/index.css +10 -10
  12. package/components/checkmark-mobile/Component.js +1 -1
  13. package/components/checkmark-mobile/index.css +6 -6
  14. package/components/field/Component.js +1 -1
  15. package/components/field/index.css +12 -12
  16. package/components/footer/Component.js +1 -1
  17. package/components/footer/index.css +5 -5
  18. package/components/optgroup/Component.js +1 -1
  19. package/components/optgroup/index.css +6 -6
  20. package/components/option/Component.js +1 -1
  21. package/components/option/index.css +19 -19
  22. package/components/options-list/Component.js +23 -9
  23. package/components/options-list/index.css +16 -12
  24. package/components/search/Component.js +1 -1
  25. package/components/search/index.css +2 -2
  26. package/components/virtual-options-list/Component.js +1 -1
  27. package/components/virtual-options-list/index.css +15 -15
  28. package/cssm/components/base-select/Component.js +2 -2
  29. package/cssm/components/options-list/Component.js +22 -8
  30. package/cssm/components/options-list/index.module.css +8 -4
  31. package/cssm/typings.d.ts +5 -1
  32. package/esm/components/arrow/Component.js +1 -1
  33. package/esm/components/arrow/index.css +3 -3
  34. package/esm/components/base-checkmark/Component.js +1 -1
  35. package/esm/components/base-checkmark/index.css +4 -4
  36. package/esm/components/base-option/Component.js +1 -1
  37. package/esm/components/base-option/index.css +13 -13
  38. package/esm/components/base-select/Component.js +4 -4
  39. package/esm/components/base-select/index.css +11 -11
  40. package/esm/components/base-select/mobile.css +12 -12
  41. package/esm/components/checkmark/Component.js +1 -1
  42. package/esm/components/checkmark/index.css +10 -10
  43. package/esm/components/checkmark-mobile/Component.js +1 -1
  44. package/esm/components/checkmark-mobile/index.css +6 -6
  45. package/esm/components/field/Component.js +1 -1
  46. package/esm/components/field/index.css +12 -12
  47. package/esm/components/footer/Component.js +1 -1
  48. package/esm/components/footer/index.css +5 -5
  49. package/esm/components/optgroup/Component.js +1 -1
  50. package/esm/components/optgroup/index.css +6 -6
  51. package/esm/components/option/Component.js +1 -1
  52. package/esm/components/option/index.css +19 -19
  53. package/esm/components/options-list/Component.js +24 -10
  54. package/esm/components/options-list/index.css +16 -12
  55. package/esm/components/search/Component.js +1 -1
  56. package/esm/components/search/index.css +2 -2
  57. package/esm/components/virtual-options-list/Component.js +1 -1
  58. package/esm/components/virtual-options-list/index.css +15 -15
  59. package/esm/mobile/Component.mobile.js +1 -1
  60. package/esm/presets/index.js +1 -1
  61. package/esm/presets/useSelectWithApply/hook.js +1 -1
  62. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  63. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  64. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  65. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  66. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  67. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  68. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  69. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  70. package/esm/presets/useSelectWithLoading/index.css +2 -2
  71. package/esm/shared/index.js +1 -1
  72. package/esm/typings.d.ts +5 -1
  73. package/mobile/Component.mobile.js +1 -1
  74. package/modern/components/arrow/Component.js +1 -1
  75. package/modern/components/arrow/index.css +3 -3
  76. package/modern/components/base-checkmark/Component.js +1 -1
  77. package/modern/components/base-checkmark/index.css +4 -4
  78. package/modern/components/base-option/Component.js +1 -1
  79. package/modern/components/base-option/index.css +13 -13
  80. package/modern/components/base-select/Component.js +4 -4
  81. package/modern/components/base-select/index.css +11 -11
  82. package/modern/components/base-select/mobile.css +12 -12
  83. package/modern/components/checkmark/Component.js +1 -1
  84. package/modern/components/checkmark/index.css +10 -10
  85. package/modern/components/checkmark-mobile/Component.js +1 -1
  86. package/modern/components/checkmark-mobile/index.css +6 -6
  87. package/modern/components/field/Component.js +1 -1
  88. package/modern/components/field/index.css +12 -12
  89. package/modern/components/footer/Component.js +1 -1
  90. package/modern/components/footer/index.css +5 -5
  91. package/modern/components/optgroup/Component.js +1 -1
  92. package/modern/components/optgroup/index.css +6 -6
  93. package/modern/components/option/Component.js +1 -1
  94. package/modern/components/option/index.css +19 -19
  95. package/modern/components/options-list/Component.js +20 -6
  96. package/modern/components/options-list/index.css +16 -12
  97. package/modern/components/search/Component.js +1 -1
  98. package/modern/components/search/index.css +2 -2
  99. package/modern/components/virtual-options-list/Component.js +1 -1
  100. package/modern/components/virtual-options-list/index.css +15 -15
  101. package/modern/mobile/Component.mobile.js +1 -1
  102. package/modern/presets/index.js +1 -1
  103. package/modern/presets/useSelectWithApply/hook.js +1 -1
  104. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  105. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  106. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  107. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  108. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  109. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  110. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  111. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  112. package/modern/presets/useSelectWithLoading/index.css +2 -2
  113. package/modern/shared/index.js +1 -1
  114. package/modern/typings.d.ts +5 -1
  115. package/package.json +6 -6
  116. package/presets/index.js +1 -1
  117. package/presets/useSelectWithApply/hook.js +1 -1
  118. package/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  119. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  120. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  121. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  122. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  123. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  124. package/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  125. package/presets/useSelectWithLoading/hook.js +1 -1
  126. package/presets/useSelectWithLoading/index.css +2 -2
  127. package/shared/index.js +1 -1
  128. package/src/components/base-select/Component.tsx +2 -0
  129. package/src/components/options-list/Component.tsx +30 -5
  130. package/src/components/options-list/index.module.css +8 -2
  131. package/src/typings.ts +16 -1
  132. package/typings.d.ts +5 -1
  133. /package/esm/{hook-db3bacf5.d.ts → hook-1d6dd392.d.ts} +0 -0
  134. /package/esm/{hook-db3bacf5.js → hook-1d6dd392.js} +0 -0
  135. /package/{hook-4d7077f8.d.ts → hook-cb84dd1e.d.ts} +0 -0
  136. /package/{hook-4d7077f8.js → hook-cb84dd1e.js} +0 -0
  137. /package/modern/{hook-0b1ac3c1.d.ts → hook-d55d5190.d.ts} +0 -0
  138. /package/modern/{hook-0b1ac3c1.js → hook-d55d5190.js} +0 -0
@@ -1,4 +1,4 @@
1
- /* hash: 1wukk */
1
+ /* hash: 14r69 */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-primary: #d5d6dc;
@@ -53,7 +53,7 @@
53
53
  /* checkmark */
54
54
 
55
55
  /* optgroup */
56
- } .select__option_13fzx {
56
+ } .select__option_45akb {
57
57
  font-size: 16px;
58
58
  line-height: 20px;
59
59
  font-weight: 400;
@@ -68,10 +68,10 @@
68
68
  box-sizing: border-box;
69
69
  position: relative;
70
70
  cursor: pointer
71
- } .select__option_13fzx:not(.select__disabled_13fzx):active {
71
+ } .select__option_45akb:not(.select__disabled_45akb):active {
72
72
  background: var(--select-option-active-background);
73
73
  color: var(--select-option-active-color);
74
- } .select__option_13fzx:before {
74
+ } .select__option_45akb:before {
75
75
  content: '';
76
76
  position: absolute;
77
77
  left: var(--select-option-left-padding);
@@ -81,42 +81,42 @@
81
81
  background: var(--select-option-divider-background);
82
82
  display: var(--select-option-divider-display);
83
83
  transition: opacity 0.2s ease;
84
- } .select__option_13fzx:first-child:before {
84
+ } .select__option_45akb:first-child:before {
85
85
  display: none;
86
- } .select__size-48_13fzx {
86
+ } .select__size-48_45akb {
87
87
  min-height: var(--size-s-height);
88
- } .select__size-56_13fzx {
88
+ } .select__size-56_45akb {
89
89
  min-height: var(--size-m-height);
90
- } .select__size-64_13fzx {
90
+ } .select__size-64_45akb {
91
91
  min-height: var(--size-l-height);
92
- } .select__size-72_13fzx {
92
+ } .select__size-72_45akb {
93
93
  min-height: var(--size-xl-height);
94
- } .select__size-64_13fzx,
95
- .select__size-72_13fzx {
94
+ } .select__size-64_45akb,
95
+ .select__size-72_45akb {
96
96
  padding-left: var(--select-option-l-left-padding);
97
97
  padding-right: var(--select-option-l-right-padding)
98
- } .select__size-64_13fzx:before, .select__size-72_13fzx:before {
98
+ } .select__size-64_45akb:before, .select__size-72_45akb:before {
99
99
  left: var(--select-option-l-left-padding);
100
100
  right: var(--select-option-l-right-padding);
101
- } .select__selected_13fzx {
101
+ } .select__selected_45akb {
102
102
  background: var(--select-option-selected-background);
103
103
  color: var(--select-option-selected-color);
104
104
  cursor: default;
105
- } .select__highlighted_13fzx {
105
+ } .select__highlighted_45akb {
106
106
  background: var(--select-option-hover-background);
107
107
  color: var(--select-option-hover-color)
108
- } .select__highlighted_13fzx:before,
109
- .select__highlighted_13fzx + .select__option_13fzx:before {
108
+ } .select__highlighted_45akb:before,
109
+ .select__highlighted_45akb + .select__option_45akb:before {
110
110
  opacity: 0;
111
- } .select__disabled_13fzx {
111
+ } .select__disabled_45akb {
112
112
  cursor: var(--disabled-cursor);
113
113
  background: var(--select-option-disabled-background);
114
114
  color: var(--select-option-disabled-color);
115
- } .select__content_13fzx {
115
+ } .select__content_45akb {
116
116
  overflow: hidden;
117
117
  flex: 1;
118
118
  text-overflow: ellipsis;
119
- } .select__textContent_13fzx {
119
+ } .select__textContent_45akb {
120
120
  padding-top: var(--gap-s);
121
121
  padding-bottom: var(--gap-s);
122
122
  }
@@ -19,7 +19,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
19
19
  var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
20
20
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
21
21
 
22
- var styles = {"optionsList":"select__optionsList_7o6mg","optionsListHeader":"select__optionsListHeader_7o6mg","optionsListFooter":"select__optionsListFooter_7o6mg","withBorder":"select__withBorder_7o6mg","scrollable":"select__scrollable_7o6mg","emptyPlaceholder":"select__emptyPlaceholder_7o6mg","size-64":"select__size-64_7o6mg","size-72":"select__size-72_7o6mg"};
22
+ var styles = {"optionsList":"select__optionsList_1mvol","optionsListHeader":"select__optionsListHeader_1mvol","headerHighlighted":"select__headerHighlighted_1mvol","optionsListFooter":"select__optionsListFooter_1mvol","withBorder":"select__withBorder_1mvol","scrollable":"select__scrollable_1mvol","emptyPlaceholder":"select__emptyPlaceholder_1mvol","size-64":"select__size-64_1mvol","size-72":"select__size-72_1mvol"};
23
23
  require('./index.css')
24
24
 
25
25
  var createCounter = function () {
@@ -28,13 +28,23 @@ var createCounter = function () {
28
28
  return function () { return count++; };
29
29
  };
30
30
  var OptionsList = React.forwardRef(function (_a, ref) {
31
- var _b;
32
- var _c = _a.size, size = _c === void 0 ? 48 : _c, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _d = _a.options, options = _d === void 0 ? [] : _d, _e = _a.Optgroup, Optgroup = _e === void 0 ? components_optgroup_Component.Optgroup : _e, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _f = _a.visibleOptions, visibleOptions = _f === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _f, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _g = _a.showFooter, showFooter = _g === void 0 ? true : _g, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _h = _a.flatOptions, flatOptions = _h === void 0 ? [] : _h, setHighlightedIndex = _a.setHighlightedIndex;
31
+ var _b, _c;
32
+ var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex;
33
+ var _k = React.useState(true), scrollTop = _k[0], setScrollTop = _k[1];
34
+ var _l = React.useState(false), scrollBottom = _l[0], setScrollBottom = _l[1];
33
35
  var query = '(max-width: 1023px)';
34
36
  var nativeScrollbar = coreComponentsMq.useMatchMedia(query, function () {
35
37
  return coreComponentsShared.isClient() ? window.matchMedia(query).matches : true;
36
38
  })[0];
37
39
  nativeScrollbar = Boolean(nativeScrollbarProp !== null && nativeScrollbarProp !== void 0 ? nativeScrollbarProp : nativeScrollbar);
40
+ var handleScroll = React.useCallback(function (event) {
41
+ var scrolledToHeader = event.currentTarget.scrollTop <= 0;
42
+ var scrolledToFooter = event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=
43
+ event.currentTarget.scrollTop;
44
+ setScrollTop(scrolledToHeader);
45
+ setScrollBottom(scrolledToFooter);
46
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(event);
47
+ }, [onScroll]);
38
48
  var renderOption = function (option, index) { return (React__default.default.createElement(Option, tslib.__assign({ key: option.key }, getOptionProps(option, index)))); };
39
49
  var listRef = React.useRef(null);
40
50
  var scrollbarRef = React.useRef(null);
@@ -51,20 +61,24 @@ var OptionsList = React.forwardRef(function (_a, ref) {
51
61
  emptyPlaceholder && options.length === 0 && (React__default.default.createElement("div", { className: styles.emptyPlaceholder }, emptyPlaceholder)))); };
52
62
  var renderWithCustomScrollbar = function () {
53
63
  var scrollableNodeProps = {
54
- onScroll: onScroll,
64
+ onScroll: handleScroll,
55
65
  'data-test-id': dataTestId,
56
66
  ref: ref,
57
67
  };
58
68
  return (React__default.default.createElement(coreComponentsScrollbar.Scrollbar, { className: cn__default.default(styles.scrollable, scrollbarClassName), ref: scrollbarRef, horizontalAutoStretch: optionsListWidth === 'content', scrollableNodeProps: scrollableNodeProps, contentNodeProps: { ref: listRef } }, renderListItems()));
59
69
  };
60
- var renderWithNativeScrollbar = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles.scrollable, scrollbarClassName), ref: mergeRefs__default.default([listRef, ref]), onScroll: onScroll }, renderListItems())); };
70
+ var renderWithNativeScrollbar = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles.scrollable, scrollbarClassName), ref: mergeRefs__default.default([listRef, ref]), onScroll: handleScroll }, renderListItems())); };
61
71
  var resetHighlightedIndex = function () { return setHighlightedIndex === null || setHighlightedIndex === void 0 ? void 0 : setHighlightedIndex(-1); };
62
72
  return (React__default.default.createElement("div", tslib.__assign({}, (nativeScrollbar && { 'data-test-id': dataTestId }), { className: cn__default.default(styles.optionsList, styles[consts.SIZE_TO_CLASSNAME_MAP[size]], className) }),
63
- header && (React__default.default.createElement("div", { className: styles.optionsListHeader, onMouseEnter: resetHighlightedIndex }, header)),
73
+ header && (React__default.default.createElement("div", { className: cn__default.default(styles.optionsListHeader, (_b = {},
74
+ _b[styles.headerHighlighted] = !scrollTop,
75
+ _b)), onMouseEnter: resetHighlightedIndex }, header)),
64
76
  nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar(),
65
- showFooter && footer && (React__default.default.createElement("div", { onMouseEnter: resetHighlightedIndex, className: cn__default.default(styles.optionsListFooter, (_b = {},
66
- _b[styles.withBorder] = visibleOptions && flatOptions.length > visibleOptions,
67
- _b)) }, footer))));
77
+ showFooter && footer && (React__default.default.createElement("div", { onMouseEnter: resetHighlightedIndex, className: cn__default.default(styles.optionsListFooter, (_c = {},
78
+ _c[styles.withBorder] = visibleOptions &&
79
+ flatOptions.length > visibleOptions &&
80
+ !scrollBottom,
81
+ _c)) }, footer))));
68
82
  });
69
83
 
70
84
  exports.OptionsList = OptionsList;
@@ -1,4 +1,4 @@
1
- /* hash: 11l2x */
1
+ /* hash: 1x9d7 */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-neutral-300: #e7e8eb;
@@ -29,28 +29,32 @@
29
29
  /* checkmark */
30
30
 
31
31
  /* optgroup */
32
- } .select__optionsList_7o6mg {
32
+ } .select__optionsList_1mvol {
33
33
  width: 100%;
34
34
  outline: none;
35
35
  box-sizing: border-box;
36
36
  position: relative;
37
- } .select__optionsListHeader_7o6mg {
37
+ } .select__optionsListHeader_1mvol {
38
38
  box-sizing: border-box;
39
- border-bottom: 1px solid var(--color-light-neutral-300);
40
- } .select__optionsListFooter_7o6mg {
39
+ border-bottom: 1px solid transparent;
40
+ transition: border-color 0.2s ease
41
+ } .select__optionsListHeader_1mvol.select__headerHighlighted_1mvol {
42
+ border-bottom-color: var(--color-light-neutral-300);
43
+ } .select__optionsListFooter_1mvol {
41
44
  position: sticky;
42
45
  bottom: 0;
43
46
  box-sizing: border-box;
44
- border-top: 1px solid transparent
45
- } .select__optionsListFooter_7o6mg.select__withBorder_7o6mg {
46
- border-top: 1px solid var(--color-light-neutral-300);
47
- } .select__scrollable_7o6mg {
47
+ border-top: 1px solid transparent;
48
+ transition: border-color 0.2s ease
49
+ } .select__optionsListFooter_1mvol.select__withBorder_1mvol {
50
+ border-top-color: var(--color-light-neutral-300);
51
+ } .select__scrollable_1mvol {
48
52
  overflow: auto;
49
53
  width: 100%;
50
- } .select__emptyPlaceholder_7o6mg {
54
+ } .select__emptyPlaceholder_1mvol {
51
55
  padding: var(--gap-m) var(--gap-s);
52
56
  color: var(--select-options-list-empty-placeholder-color);
53
- } .select__size-64_7o6mg .select__emptyPlaceholder_7o6mg,
54
- .select__size-72_7o6mg .select__emptyPlaceholder_7o6mg {
57
+ } .select__size-64_1mvol .select__emptyPlaceholder_1mvol,
58
+ .select__size-72_1mvol .select__emptyPlaceholder_1mvol {
55
59
  padding: var(--gap-xl) var(--gap-m);
56
60
  }
@@ -13,7 +13,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
13
13
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
14
14
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
15
15
 
16
- var styles = {"component":"select__component_1pno6"};
16
+ var styles = {"component":"select__component_1a1gx"};
17
17
  require('./index.css')
18
18
 
19
19
  var Search = React.forwardRef(function (_a, ref) {
@@ -1,4 +1,4 @@
1
- /* hash: 84rkm */
1
+ /* hash: 5ao9j */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -23,6 +23,6 @@
23
23
  /* checkmark */
24
24
 
25
25
  /* optgroup */
26
- } .select__component_1pno6.select__component_1pno6 {
26
+ } .select__component_1a1gx.select__component_1a1gx {
27
27
  width: auto;
28
28
  }
@@ -20,7 +20,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
20
20
  var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
21
21
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
22
22
 
23
- var styles = {"virtualOptionsList":"select__virtualOptionsList_6iu7u","virtualOptionsListHeader":"select__virtualOptionsListHeader_6iu7u","virtualOptionsListFooter":"select__virtualOptionsListFooter_6iu7u","withBorder":"select__withBorder_6iu7u","scrollable":"select__scrollable_6iu7u","inner":"select__inner_6iu7u","virtualRow":"select__virtualRow_6iu7u","highlighted":"select__highlighted_6iu7u","emptyPlaceholder":"select__emptyPlaceholder_6iu7u","size-64":"select__size-64_6iu7u","size-72":"select__size-72_6iu7u"};
23
+ var styles = {"virtualOptionsList":"select__virtualOptionsList_y90de","virtualOptionsListHeader":"select__virtualOptionsListHeader_y90de","virtualOptionsListFooter":"select__virtualOptionsListFooter_y90de","withBorder":"select__withBorder_y90de","scrollable":"select__scrollable_y90de","inner":"select__inner_y90de","virtualRow":"select__virtualRow_y90de","highlighted":"select__highlighted_y90de","emptyPlaceholder":"select__emptyPlaceholder_y90de","size-64":"select__size-64_y90de","size-72":"select__size-72_y90de"};
24
24
  require('./index.css')
25
25
 
26
26
  var VirtualOptionsList = React.forwardRef(function (_a, ref) {
@@ -1,4 +1,4 @@
1
- /* hash: 1eqys */
1
+ /* hash: 1qpvv */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-primary: #d5d6dc;
@@ -35,34 +35,34 @@
35
35
  /* checkmark */
36
36
 
37
37
  /* optgroup */
38
- } .select__virtualOptionsList_6iu7u {
38
+ } .select__virtualOptionsList_y90de {
39
39
  width: 100%;
40
40
  outline: none;
41
41
  box-sizing: border-box;
42
42
  position: sticky;
43
- } .select__virtualOptionsListHeader_6iu7u {
43
+ } .select__virtualOptionsListHeader_y90de {
44
44
  box-sizing: border-box;
45
45
  border-bottom: 1px solid var(--color-light-neutral-300);
46
- } .select__virtualOptionsListFooter_6iu7u {
46
+ } .select__virtualOptionsListFooter_y90de {
47
47
  position: sticky;
48
48
  bottom: 0;
49
49
  box-sizing: border-box;
50
50
  border-top: 1px solid transparent
51
- } .select__virtualOptionsListFooter_6iu7u.select__withBorder_6iu7u {
51
+ } .select__virtualOptionsListFooter_y90de.select__withBorder_y90de {
52
52
  border-top: 1px solid var(--color-light-neutral-300);
53
- } .select__scrollable_6iu7u {
53
+ } .select__scrollable_y90de {
54
54
  position: relative;
55
55
  overflow: auto;
56
56
  width: 100%;
57
- } .select__inner_6iu7u {
57
+ } .select__inner_y90de {
58
58
  position: relative;
59
59
  width: 100%;
60
- } .select__virtualRow_6iu7u {
60
+ } .select__virtualRow_y90de {
61
61
  position: absolute;
62
62
  top: 0;
63
63
  left: 0;
64
64
  width: 100%
65
- } .select__virtualRow_6iu7u:before {
65
+ } .select__virtualRow_y90de:before {
66
66
  content: '';
67
67
  position: absolute;
68
68
  z-index: 1;
@@ -72,15 +72,15 @@
72
72
  height: 1px;
73
73
  background: var(--select-option-divider-background);
74
74
  display: var(--select-option-divider-display);
75
- } .select__virtualRow_6iu7u:first-child:before {
75
+ } .select__virtualRow_y90de:first-child:before {
76
76
  display: none;
77
- } .select__highlighted_6iu7u:before,
78
- .select__highlighted_6iu7u + .select__virtualRow_6iu7u:before {
77
+ } .select__highlighted_y90de:before,
78
+ .select__highlighted_y90de + .select__virtualRow_y90de:before {
79
79
  display: none;
80
- } .select__emptyPlaceholder_6iu7u {
80
+ } .select__emptyPlaceholder_y90de {
81
81
  padding: var(--gap-m) var(--gap-s);
82
82
  color: var(--select-options-list-empty-placeholder-color);
83
- } .select__size-64_6iu7u .select__emptyPlaceholder_6iu7u,
84
- .select__size-72_6iu7u .select__emptyPlaceholder_6iu7u {
83
+ } .select__size-64_y90de .select__emptyPlaceholder_y90de,
84
+ .select__size-72_y90de .select__emptyPlaceholder_y90de {
85
85
  padding: var(--gap-xl) var(--gap-m);
86
86
  }
@@ -31,7 +31,7 @@ var BaseSelect = React.forwardRef(
31
31
  // eslint-disable-next-line complexity
32
32
  function (_a, ref) {
33
33
  var _b;
34
- var dataTestId = _a.dataTestId, className = _a.className, fieldClassName = _a.fieldClassName, optionGroupClassName = _a.optionGroupClassName, optionsListClassName = _a.optionsListClassName, optionClassName = _a.optionClassName, popperClassName = _a.popperClassName, options = _a.options, _c = _a.autocomplete, autocomplete = _c === void 0 ? false : _c, _d = _a.multiple, multiple = _d === void 0 ? false : _d, _e = _a.allowUnselect, allowUnselect = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.closeOnSelect, closeOnSelect = _g === void 0 ? !multiple : _g, _h = _a.circularNavigation, circularNavigation = _h === void 0 ? false : _h, _j = _a.nativeSelect, nativeSelect = _j === void 0 ? false : _j, _k = _a.defaultOpen, defaultOpen = _k === void 0 ? false : _k, openProp = _a.open, _l = _a.popoverPosition, popoverPosition = _l === void 0 ? 'bottom-start' : _l, _m = _a.preventFlip, preventFlip = _m === void 0 ? true : _m, _o = _a.optionsListWidth, optionsListWidth = _o === void 0 ? 'content' : _o, name = _a.name, id = _a.id, selected = _a.selected, _p = _a.size, size = _p === void 0 ? 48 : _p, _q = _a.optionsSize, optionsSize = _q === void 0 ? size : _q, error = _a.error, hint = _a.hint, block = _a.block, label = _a.label, labelView = _a.labelView, placeholder = _a.placeholder, _r = _a.fieldProps, fieldProps = _r === void 0 ? {} : _r, _s = _a.optionsListProps, optionsListProps = _s === void 0 ? {} : _s, _t = _a.optionProps, optionProps = _t === void 0 ? {} : _t, _u = _a.searchProps, searchProps = _u === void 0 ? {} : _u, _v = _a.showSearch, showSearch = _v === void 0 ? false : _v, valueRenderer = _a.valueRenderer, onChange = _a.onChange, onOpen = _a.onOpen, onFocus = _a.onFocus, onBlur = _a.onBlur, onScroll = _a.onScroll, Arrow = _a.Arrow, _w = _a.Field, Field = _w === void 0 ? function () { return null; } : _w, _x = _a.OptionsList, OptionsList = _x === void 0 ? function () { return null; } : _x, _y = _a.Optgroup, Optgroup = _y === void 0 ? function () { return null; } : _y, _z = _a.Option, Option = _z === void 0 ? function () { return null; } : _z, _0 = _a.Search, Search = _0 === void 0 ? function () { return null; } : _0, updatePopover = _a.updatePopover, zIndexPopover = _a.zIndexPopover, _1 = _a.showEmptyOptionsList, showEmptyOptionsList = _1 === void 0 ? false : _1, visibleOptions = _a.visibleOptions, view = _a.view, _2 = _a.isBottomSheet, isBottomSheet = _2 === void 0 ? true : _2, footer = _a.footer, swipeable = _a.swipeable, modalProps = _a.modalProps, modalFooterProps = _a.modalFooterProps, modalHeaderProps = _a.modalHeaderProps, bottomSheetProps = _a.bottomSheetProps, Popover = _a.Popover, ModalMobile = _a.ModalMobile, BottomSheet = _a.BottomSheet;
34
+ var dataTestId = _a.dataTestId, className = _a.className, fieldClassName = _a.fieldClassName, optionGroupClassName = _a.optionGroupClassName, optionsListClassName = _a.optionsListClassName, optionClassName = _a.optionClassName, popperClassName = _a.popperClassName, options = _a.options, _c = _a.autocomplete, autocomplete = _c === void 0 ? false : _c, _d = _a.multiple, multiple = _d === void 0 ? false : _d, _e = _a.allowUnselect, allowUnselect = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.closeOnSelect, closeOnSelect = _g === void 0 ? !multiple : _g, _h = _a.circularNavigation, circularNavigation = _h === void 0 ? false : _h, _j = _a.nativeSelect, nativeSelect = _j === void 0 ? false : _j, _k = _a.defaultOpen, defaultOpen = _k === void 0 ? false : _k, openProp = _a.open, _l = _a.popoverPosition, popoverPosition = _l === void 0 ? 'bottom-start' : _l, _m = _a.preventFlip, preventFlip = _m === void 0 ? true : _m, _o = _a.optionsListWidth, optionsListWidth = _o === void 0 ? 'content' : _o, name = _a.name, id = _a.id, selected = _a.selected, _p = _a.size, size = _p === void 0 ? 48 : _p, _q = _a.optionsSize, optionsSize = _q === void 0 ? size : _q, error = _a.error, hint = _a.hint, block = _a.block, label = _a.label, labelView = _a.labelView, placeholder = _a.placeholder, _r = _a.fieldProps, fieldProps = _r === void 0 ? {} : _r, _s = _a.optionsListProps, optionsListProps = _s === void 0 ? {} : _s, _t = _a.optionProps, optionProps = _t === void 0 ? {} : _t, _u = _a.searchProps, searchProps = _u === void 0 ? {} : _u, _v = _a.showSearch, showSearch = _v === void 0 ? false : _v, valueRenderer = _a.valueRenderer, onChange = _a.onChange, onOpen = _a.onOpen, onFocus = _a.onFocus, onBlur = _a.onBlur, onScroll = _a.onScroll, Arrow = _a.Arrow, _w = _a.Field, Field = _w === void 0 ? function () { return null; } : _w, _x = _a.OptionsList, OptionsList = _x === void 0 ? function () { return null; } : _x, _y = _a.Optgroup, Optgroup = _y === void 0 ? function () { return null; } : _y, _z = _a.Option, Option = _z === void 0 ? function () { return null; } : _z, _0 = _a.Search, Search = _0 === void 0 ? function () { return null; } : _0, updatePopover = _a.updatePopover, zIndexPopover = _a.zIndexPopover, _1 = _a.showEmptyOptionsList, showEmptyOptionsList = _1 === void 0 ? false : _1, visibleOptions = _a.visibleOptions, view = _a.view, _2 = _a.isBottomSheet, isBottomSheet = _2 === void 0 ? true : _2, footer = _a.footer, swipeable = _a.swipeable, modalProps = _a.modalProps, popoverProps = _a.popoverProps, modalFooterProps = _a.modalFooterProps, modalHeaderProps = _a.modalHeaderProps, bottomSheetProps = _a.bottomSheetProps, Popover = _a.Popover, ModalMobile = _a.ModalMobile, BottomSheet = _a.BottomSheet;
35
35
  var rootRef = React.useRef(null);
36
36
  var fieldRef = React.useRef(null);
37
37
  var listRef = React.useRef(null);
@@ -368,7 +368,7 @@ function (_a, ref) {
368
368
  };
369
369
  var renderInPopover = function () {
370
370
  if (!nativeSelect && Popover) {
371
- return (React__default.default.createElement(Popover, { open: open, withTransition: false, anchorElement: fieldRef.current, position: popoverPosition, preventFlip: preventFlip, popperClassName: cn__default.default(styles__default.default.popoverInner, popperClassName), update: updatePopover, zIndex: zIndexPopover }, renderOptionsList()));
371
+ return (React__default.default.createElement(Popover, tslib.__assign({}, popoverProps, { open: open, withTransition: false, anchorElement: fieldRef.current, position: popoverPosition, preventFlip: preventFlip, popperClassName: cn__default.default(styles__default.default.popoverInner, popperClassName), update: updatePopover, zIndex: zIndexPopover }), renderOptionsList()));
372
372
  }
373
373
  return null;
374
374
  };
@@ -27,13 +27,23 @@ var createCounter = function () {
27
27
  return function () { return count++; };
28
28
  };
29
29
  var OptionsList = React.forwardRef(function (_a, ref) {
30
- var _b;
31
- var _c = _a.size, size = _c === void 0 ? 48 : _c, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _d = _a.options, options = _d === void 0 ? [] : _d, _e = _a.Optgroup, Optgroup = _e === void 0 ? components_optgroup_Component.Optgroup : _e, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _f = _a.visibleOptions, visibleOptions = _f === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _f, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _g = _a.showFooter, showFooter = _g === void 0 ? true : _g, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _h = _a.flatOptions, flatOptions = _h === void 0 ? [] : _h, setHighlightedIndex = _a.setHighlightedIndex;
30
+ var _b, _c;
31
+ var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex;
32
+ var _k = React.useState(true), scrollTop = _k[0], setScrollTop = _k[1];
33
+ var _l = React.useState(false), scrollBottom = _l[0], setScrollBottom = _l[1];
32
34
  var query = '(max-width: 1023px)';
33
35
  var nativeScrollbar = coreComponentsMq.useMatchMedia(query, function () {
34
36
  return coreComponentsShared.isClient() ? window.matchMedia(query).matches : true;
35
37
  })[0];
36
38
  nativeScrollbar = Boolean(nativeScrollbarProp !== null && nativeScrollbarProp !== void 0 ? nativeScrollbarProp : nativeScrollbar);
39
+ var handleScroll = React.useCallback(function (event) {
40
+ var scrolledToHeader = event.currentTarget.scrollTop <= 0;
41
+ var scrolledToFooter = event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=
42
+ event.currentTarget.scrollTop;
43
+ setScrollTop(scrolledToHeader);
44
+ setScrollBottom(scrolledToFooter);
45
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(event);
46
+ }, [onScroll]);
37
47
  var renderOption = function (option, index) { return (React__default.default.createElement(Option, tslib.__assign({ key: option.key }, getOptionProps(option, index)))); };
38
48
  var listRef = React.useRef(null);
39
49
  var scrollbarRef = React.useRef(null);
@@ -50,20 +60,24 @@ var OptionsList = React.forwardRef(function (_a, ref) {
50
60
  emptyPlaceholder && options.length === 0 && (React__default.default.createElement("div", { className: styles__default.default.emptyPlaceholder }, emptyPlaceholder)))); };
51
61
  var renderWithCustomScrollbar = function () {
52
62
  var scrollableNodeProps = {
53
- onScroll: onScroll,
63
+ onScroll: handleScroll,
54
64
  'data-test-id': dataTestId,
55
65
  ref: ref,
56
66
  };
57
67
  return (React__default.default.createElement(coreComponentsScrollbar.Scrollbar, { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: scrollbarRef, horizontalAutoStretch: optionsListWidth === 'content', scrollableNodeProps: scrollableNodeProps, contentNodeProps: { ref: listRef } }, renderListItems()));
58
68
  };
59
- var renderWithNativeScrollbar = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: mergeRefs__default.default([listRef, ref]), onScroll: onScroll }, renderListItems())); };
69
+ var renderWithNativeScrollbar = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: mergeRefs__default.default([listRef, ref]), onScroll: handleScroll }, renderListItems())); };
60
70
  var resetHighlightedIndex = function () { return setHighlightedIndex === null || setHighlightedIndex === void 0 ? void 0 : setHighlightedIndex(-1); };
61
71
  return (React__default.default.createElement("div", tslib.__assign({}, (nativeScrollbar && { 'data-test-id': dataTestId }), { className: cn__default.default(styles__default.default.optionsList, styles__default.default[consts.SIZE_TO_CLASSNAME_MAP[size]], className) }),
62
- header && (React__default.default.createElement("div", { className: styles__default.default.optionsListHeader, onMouseEnter: resetHighlightedIndex }, header)),
72
+ header && (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.optionsListHeader, (_b = {},
73
+ _b[styles__default.default.headerHighlighted] = !scrollTop,
74
+ _b)), onMouseEnter: resetHighlightedIndex }, header)),
63
75
  nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar(),
64
- showFooter && footer && (React__default.default.createElement("div", { onMouseEnter: resetHighlightedIndex, className: cn__default.default(styles__default.default.optionsListFooter, (_b = {},
65
- _b[styles__default.default.withBorder] = visibleOptions && flatOptions.length > visibleOptions,
66
- _b)) }, footer))));
76
+ showFooter && footer && (React__default.default.createElement("div", { onMouseEnter: resetHighlightedIndex, className: cn__default.default(styles__default.default.optionsListFooter, (_c = {},
77
+ _c[styles__default.default.withBorder] = visibleOptions &&
78
+ flatOptions.length > visibleOptions &&
79
+ !scrollBottom,
80
+ _c)) }, footer))));
67
81
  });
68
82
 
69
83
  exports.OptionsList = OptionsList;
@@ -35,14 +35,18 @@
35
35
  position: relative;
36
36
  } .optionsListHeader {
37
37
  box-sizing: border-box;
38
- border-bottom: 1px solid var(--color-light-neutral-300);
39
- } .optionsListFooter {
38
+ border-bottom: 1px solid transparent;
39
+ transition: border-color 0.2s ease
40
+ } .optionsListHeader.headerHighlighted {
41
+ border-bottom-color: var(--color-light-neutral-300);
42
+ } .optionsListFooter {
40
43
  position: sticky;
41
44
  bottom: 0;
42
45
  box-sizing: border-box;
43
- border-top: 1px solid transparent
46
+ border-top: 1px solid transparent;
47
+ transition: border-color 0.2s ease
44
48
  } .optionsListFooter.withBorder {
45
- border-top: 1px solid var(--color-light-neutral-300);
49
+ border-top-color: var(--color-light-neutral-300);
46
50
  } .scrollable {
47
51
  overflow: auto;
48
52
  width: 100%;
package/cssm/typings.d.ts CHANGED
@@ -76,7 +76,7 @@ type BaseSelectProps = {
76
76
  /**
77
77
  * Дополнительный класс для поповера
78
78
  */
79
- popperClassName?: string;
79
+ popperClassName?: PopoverProps['className'];
80
80
  /**
81
81
  * Список вариантов выбора
82
82
  */
@@ -273,6 +273,10 @@ type BaseSelectProps = {
273
273
  * Показывать OptionsList, если он пустой
274
274
  */
275
275
  showEmptyOptionsList?: boolean;
276
+ /**
277
+ * Дополнительные пропсы для Popover
278
+ */
279
+ popoverProps?: Omit<PopoverProps, 'update' | 'zIndex' | 'position' | 'className' | 'open' | 'anchorElement' | 'preventFlip' | 'dataTestId'>;
276
280
  };
277
281
  type FieldProps = {
278
282
  /**
@@ -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_1ylo8","open":"select__open_1ylo8"};
5
+ var styles = {"arrow":"select__arrow_zayvt","open":"select__open_zayvt"};
6
6
  require('./index.css')
7
7
 
8
8
  var Arrow = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: jpxjb */
1
+ /* hash: 1qmc8 */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-neutral-translucent-700: rgba(4, 4, 21, 0.47); /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -26,13 +26,13 @@
26
26
  /* checkmark */
27
27
 
28
28
  /* optgroup */
29
- } .select__arrow_1ylo8 {
29
+ } .select__arrow_zayvt {
30
30
  display: block;
31
31
  width: 24px;
32
32
  height: 24px;
33
33
  color: var(--select-arrow-color);
34
34
 
35
35
  transition: transform 0.15s ease-in-out, opacity 0.2s ease;
36
- } .select__open_1ylo8 {
36
+ } .select__open_zayvt {
37
37
  transform: var(--arrow-transform);
38
38
  }
@@ -3,7 +3,7 @@ import cn from 'classnames';
3
3
  import { Checkbox } from '@alfalab/core-components-checkbox/esm';
4
4
  import { CheckmarkMIcon } from '@alfalab/icons-glyph/CheckmarkMIcon';
5
5
 
6
- var styles = {"checkmark":"select__checkmark_1vp4c","single":"select__single_1vp4c","selected":"select__selected_1vp4c"};
6
+ var styles = {"checkmark":"select__checkmark_weezx","single":"select__single_weezx","selected":"select__selected_weezx"};
7
7
  require('./index.css')
8
8
 
9
9
  var BaseCheckmark = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: q2ky5 */
1
+ /* hash: 1x0ap */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -23,14 +23,14 @@
23
23
  /* checkmark */
24
24
 
25
25
  /* optgroup */
26
- } .select__checkmark_1vp4c {
26
+ } .select__checkmark_weezx {
27
27
  flex-shrink: 0;
28
28
  box-sizing: border-box;
29
- } .select__single_1vp4c {
29
+ } .select__single_weezx {
30
30
  display: flex;
31
31
  align-items: center;
32
32
  justify-content: center;
33
33
  opacity: 0
34
- } .select__single_1vp4c.select__selected_1vp4c {
34
+ } .select__single_weezx.select__selected_weezx {
35
35
  opacity: 1;
36
36
  }
@@ -3,7 +3,7 @@ import React, { isValidElement } from 'react';
3
3
  import cn from 'classnames';
4
4
  import { BaseCheckmark } from '../base-checkmark/Component.js';
5
5
 
6
- var styles = {"option":"select__option_rfkuv","disabled":"select__disabled_rfkuv","checkmarkBefore":"select__checkmarkBefore_rfkuv","mobile":"select__mobile_rfkuv","checkmarkAfter":"select__checkmarkAfter_rfkuv","textContent":"select__textContent_rfkuv","selected":"select__selected_rfkuv","highlighted":"select__highlighted_rfkuv","content":"select__content_rfkuv"};
6
+ var styles = {"option":"select__option_luzne","disabled":"select__disabled_luzne","checkmarkBefore":"select__checkmarkBefore_luzne","mobile":"select__mobile_luzne","checkmarkAfter":"select__checkmarkAfter_luzne","textContent":"select__textContent_luzne","selected":"select__selected_luzne","highlighted":"select__highlighted_luzne","content":"select__content_luzne"};
7
7
  require('./index.css')
8
8
 
9
9
  var BaseOption = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: mldm3 */
1
+ /* hash: cligr */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-modal-bg-primary: #fff;
@@ -43,7 +43,7 @@
43
43
  /* checkmark */
44
44
 
45
45
  /* optgroup */
46
- } .select__option_rfkuv {
46
+ } .select__option_luzne {
47
47
  font-size: 16px;
48
48
  line-height: 20px;
49
49
  font-weight: 400;
@@ -60,32 +60,32 @@
60
60
  position: relative;
61
61
  cursor: pointer;
62
62
  min-height: var(--size-s-height)
63
- } .select__option_rfkuv:not(.select__disabled_rfkuv):active {
63
+ } .select__option_luzne:not(.select__disabled_luzne):active {
64
64
  background: var(--select-option-active-background);
65
65
  color: var(--select-option-active-color);
66
- } .select__option_rfkuv.select__checkmarkBefore_rfkuv {
66
+ } .select__option_luzne.select__checkmarkBefore_luzne {
67
67
  padding: 0 0 0 var(--gap-s)
68
- } .select__option_rfkuv.select__checkmarkBefore_rfkuv.select__mobile_rfkuv {
68
+ } .select__option_luzne.select__checkmarkBefore_luzne.select__mobile_luzne {
69
69
  padding-left: var(--gap-m);
70
- } .select__option_rfkuv.select__checkmarkAfter_rfkuv.select__checkmarkAfter_rfkuv {
70
+ } .select__option_luzne.select__checkmarkAfter_luzne.select__checkmarkAfter_luzne {
71
71
  padding: 0 var(--gap-s) 0 0
72
- } .select__option_rfkuv.select__checkmarkAfter_rfkuv.select__checkmarkAfter_rfkuv.select__mobile_rfkuv {
72
+ } .select__option_luzne.select__checkmarkAfter_luzne.select__checkmarkAfter_luzne.select__mobile_luzne {
73
73
  padding-right: var(--gap-l);
74
- } .select__option_rfkuv.select__textContent_rfkuv {
74
+ } .select__option_luzne.select__textContent_luzne {
75
75
  padding: var(--gap-s)
76
- } .select__option_rfkuv.select__textContent_rfkuv.select__mobile_rfkuv {
76
+ } .select__option_luzne.select__textContent_luzne.select__mobile_luzne {
77
77
  padding: var(--gap-m) var(--gap-l) var(--gap-m) var(--gap-m);
78
- } .select__selected_rfkuv {
78
+ } .select__selected_luzne {
79
79
  background: var(--select-option-selected-background);
80
80
  color: var(--select-option-selected-color);
81
81
  cursor: default;
82
- } .select__highlighted_rfkuv {
82
+ } .select__highlighted_luzne {
83
83
  background: var(--select-option-hover-background);
84
84
  color: var(--select-option-hover-color);
85
- } .select__disabled_rfkuv {
85
+ } .select__disabled_luzne {
86
86
  cursor: var(--disabled-cursor);
87
87
  background: var(--select-option-disabled-background);
88
88
  color: var(--select-option-disabled-color);
89
- } .select__content_rfkuv {
89
+ } .select__content_luzne {
90
90
  flex: 1;
91
91
  }