@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: 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
  }
@@ -11,7 +11,7 @@ import { Option } from '../components/option/Component.js';
11
11
  import { OptionsList } from '../components/options-list/Component.js';
12
12
  import { Search } from '../components/search/Component.js';
13
13
  import { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
14
- import { u as useSelectWithApply } from '../hook-0b1ac3c1.js';
14
+ import { u as useSelectWithApply } from '../hook-d55d5190.js';
15
15
  import { Header } from '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
16
16
 
17
17
  const VIRTUAL_OPTIONS_LIST_THRESHOLD = 30;
@@ -1,3 +1,3 @@
1
1
  export { useSelectWithLoading } from './useSelectWithLoading/hook.js';
2
2
  export { useLazyLoading } from './useLazyLoading/hook.js';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-0b1ac3c1.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-d55d5190.js';
@@ -1,3 +1,3 @@
1
1
  import 'react';
2
2
  import '../../utils.js';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-0b1ac3c1.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-d55d5190.js';
@@ -1,6 +1,6 @@
1
1
  import 'react';
2
2
  import '../../../components/options-list/Component.js';
3
3
  import '../../../consts.js';
4
- export { O as OptionsListWithApply } from '../../../hook-0b1ac3c1.js';
4
+ export { O as OptionsListWithApply } from '../../../hook-d55d5190.js';
5
5
  import './footer/Component.js';
6
6
  import './header/Component.js';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { ButtonDesktop } from '@alfalab/core-components-button/modern/desktop';
3
3
  import { getDataTestId } from '@alfalab/core-components-shared/modern';
4
4
 
5
- const styles = {"footer":"select__footer_znk66"};
5
+ const styles = {"footer":"select__footer_u2yyp"};
6
6
  require('./index.css')
7
7
 
8
8
  const Footer = ({ handleApply, handleClear, showClear, selectedDraft = [], dataTestId, }) => (React.createElement("div", {
@@ -1,4 +1,4 @@
1
- /* hash: 8ukox */
1
+ /* hash: kths3 */
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-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -17,10 +17,10 @@
17
17
  --gap-s: 12px;
18
18
  } :root {
19
19
  } :root {
20
- } .select__footer_znk66 {
20
+ } .select__footer_u2yyp {
21
21
  background-color: var(--color-light-bg-primary);
22
22
  padding: var(--gap-s);
23
23
  outline: none
24
- } .select__footer_znk66 > * + * {
24
+ } .select__footer_u2yyp > * + * {
25
25
  margin-left: var(--gap-xs);
26
26
  }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import cn from 'classnames';
3
3
  import { Checkbox } from '@alfalab/core-components-checkbox/modern';
4
4
 
5
- const styles = {"desktop":"select__desktop_anb11","mobile":"select__mobile_anb11"};
5
+ const styles = {"desktop":"select__desktop_yt4va","mobile":"select__mobile_yt4va"};
6
6
  require('./index.css')
7
7
 
8
8
  const Header = ({ onChange, checked, indeterminate, mobile }) => (React.createElement("div", { className: cn({ [styles.desktop]: !mobile, [styles.mobile]: mobile }) },
@@ -1,4 +1,4 @@
1
- /* hash: 4bjas */
1
+ /* hash: 75mlv */
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 */
@@ -16,8 +16,8 @@
16
16
  --gap-s: 12px;
17
17
  } :root {
18
18
  } :root {
19
- } .select__desktop_anb11 {
19
+ } .select__desktop_yt4va {
20
20
  padding: var(--gap-s);
21
- } .select__mobile_anb11 {
21
+ } .select__mobile_yt4va {
22
22
  padding: var(--gap-s) var(--gap-xs);
23
23
  }
@@ -1 +1 @@
1
- export * from "../../../hook-0b1ac3c1";
1
+ export * from "../../../hook-d55d5190";
@@ -1 +1 @@
1
- export { O as OptionsListWithApply } from '../../../hook-0b1ac3c1.js';
1
+ export { O as OptionsListWithApply } from '../../../hook-d55d5190.js';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { Skeleton } from '@alfalab/core-components-skeleton/modern';
3
3
  import { Option } from '../../components/option/Component.js';
4
4
 
5
- const styles = {"skeleton":"select__skeleton_sqbpw"};
5
+ const styles = {"skeleton":"select__skeleton_8wpmj"};
6
6
  require('./index.css')
7
7
 
8
8
  function useSelectWithLoading({ loading = false, visibleOptions = 6, Option: Option$1 = Option, }) {
@@ -1,5 +1,5 @@
1
- /* hash: cw1nf */
2
- .select__skeleton_sqbpw {
1
+ /* hash: wd6dv */
2
+ .select__skeleton_8wpmj {
3
3
  position: absolute;
4
4
  top: 50%;
5
5
  transform: translateY(-50%);
@@ -1,6 +1,6 @@
1
1
  export { useSelectWithLoading } from '../presets/useSelectWithLoading/hook.js';
2
2
  export { useLazyLoading } from '../presets/useLazyLoading/hook.js';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-0b1ac3c1.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-d55d5190.js';
4
4
  export { defaultAccessor, defaultFilterFn, getSelectTestIds, isGroup, isOptionShape, joinOptions, lastIndexOf, processOptions, usePrevious, useVisibleOptions } from '../utils.js';
5
5
  export { Option } from '../components/option/Component.js';
6
6
  export { BaseOption } from '../components/base-option/Component.js';
@@ -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
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-select",
3
- "version": "17.3.4",
3
+ "version": "17.4.0",
4
4
  "description": "Select component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -17,12 +17,12 @@
17
17
  "dependencies": {
18
18
  "@alfalab/core-components-badge": "^5.5.1",
19
19
  "@alfalab/core-components-base-modal": "^5.7.2",
20
- "@alfalab/core-components-bottom-sheet": "^6.14.3",
21
- "@alfalab/core-components-button": "^11.4.0",
22
- "@alfalab/core-components-checkbox": "^4.2.0",
20
+ "@alfalab/core-components-bottom-sheet": "^6.14.4",
21
+ "@alfalab/core-components-button": "^11.4.1",
22
+ "@alfalab/core-components-checkbox": "^4.3.0",
23
23
  "@alfalab/core-components-form-control": "^12.2.1",
24
- "@alfalab/core-components-input": "^14.3.2",
25
- "@alfalab/core-components-modal": "^9.2.1",
24
+ "@alfalab/core-components-input": "^14.3.3",
25
+ "@alfalab/core-components-modal": "^9.2.2",
26
26
  "@alfalab/core-components-mq": "^4.2.0",
27
27
  "@alfalab/core-components-popover": "^6.2.1",
28
28
  "@alfalab/core-components-scrollbar": "^3.0.0",
package/presets/index.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var presets_useSelectWithLoading_hook = require('./useSelectWithLoading/hook.js');
6
6
  var presets_useLazyLoading_hook = require('./useLazyLoading/hook.js');
7
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-4d7077f8.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-cb84dd1e.js');
8
8
 
9
9
 
10
10
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('tslib');
6
6
  require('react');
7
7
  require('../../utils.js');
8
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-4d7077f8.js');
8
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-cb84dd1e.js');
9
9
 
10
10
 
11
11
 
@@ -6,7 +6,7 @@ require('tslib');
6
6
  require('react');
7
7
  require('../../../components/options-list/Component.js');
8
8
  require('../../../consts.js');
9
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-4d7077f8.js');
9
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-cb84dd1e.js');
10
10
  require('./footer/Component.js');
11
11
  require('./header/Component.js');
12
12
 
@@ -10,7 +10,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
10
10
 
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
 
13
- var styles = {"footer":"select__footer_znk66"};
13
+ var styles = {"footer":"select__footer_u2yyp"};
14
14
  require('./index.css')
15
15
 
16
16
  var Footer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 8ukox */
1
+ /* hash: kths3 */
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-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -17,10 +17,10 @@
17
17
  --gap-s: 12px;
18
18
  } :root {
19
19
  } :root {
20
- } .select__footer_znk66 {
20
+ } .select__footer_u2yyp {
21
21
  background-color: var(--color-light-bg-primary);
22
22
  padding: var(--gap-s);
23
23
  outline: none
24
- } .select__footer_znk66 > * + * {
24
+ } .select__footer_u2yyp > * + * {
25
25
  margin-left: var(--gap-xs);
26
26
  }
@@ -11,7 +11,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
13
13
 
14
- var styles = {"desktop":"select__desktop_anb11","mobile":"select__mobile_anb11"};
14
+ var styles = {"desktop":"select__desktop_yt4va","mobile":"select__mobile_yt4va"};
15
15
  require('./index.css')
16
16
 
17
17
  var Header = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 4bjas */
1
+ /* hash: 75mlv */
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 */
@@ -16,8 +16,8 @@
16
16
  --gap-s: 12px;
17
17
  } :root {
18
18
  } :root {
19
- } .select__desktop_anb11 {
19
+ } .select__desktop_yt4va {
20
20
  padding: var(--gap-s);
21
- } .select__mobile_anb11 {
21
+ } .select__mobile_yt4va {
22
22
  padding: var(--gap-s) var(--gap-xs);
23
23
  }
@@ -1 +1 @@
1
- export * from "../../../hook-4d7077f8";
1
+ export * from "../../../hook-cb84dd1e";
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-4d7077f8.js');
5
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-cb84dd1e.js');
6
6
 
7
7
 
8
8
 
@@ -11,7 +11,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
11
11
 
12
12
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
13
13
 
14
- var styles = {"skeleton":"select__skeleton_sqbpw"};
14
+ var styles = {"skeleton":"select__skeleton_8wpmj"};
15
15
  require('./index.css')
16
16
 
17
17
  function useSelectWithLoading(_a) {
@@ -1,5 +1,5 @@
1
- /* hash: cw1nf */
2
- .select__skeleton_sqbpw {
1
+ /* hash: wd6dv */
2
+ .select__skeleton_8wpmj {
3
3
  position: absolute;
4
4
  top: 50%;
5
5
  transform: translateY(-50%);
package/shared/index.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var presets_useSelectWithLoading_hook = require('../presets/useSelectWithLoading/hook.js');
6
6
  var presets_useLazyLoading_hook = require('../presets/useLazyLoading/hook.js');
7
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-4d7077f8.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-cb84dd1e.js');
8
8
  var utils = require('../utils.js');
9
9
  var components_option_Component = require('../components/option/Component.js');
10
10
  var components_baseOption_Component = require('../components/base-option/Component.js');
@@ -135,6 +135,7 @@ export const BaseSelect = forwardRef(
135
135
  footer,
136
136
  swipeable,
137
137
  modalProps,
138
+ popoverProps,
138
139
  modalFooterProps,
139
140
  modalHeaderProps,
140
141
  bottomSheetProps,
@@ -642,6 +643,7 @@ export const BaseSelect = forwardRef(
642
643
  if (!nativeSelect && Popover) {
643
644
  return (
644
645
  <Popover
646
+ {...popoverProps}
645
647
  open={open}
646
648
  withTransition={false}
647
649
  anchorElement={fieldRef.current as HTMLElement}
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useRef } from 'react';
1
+ import React, { forwardRef, useCallback, useRef, useState } from 'react';
2
2
  import mergeRefs from 'react-merge-refs';
3
3
  import cn from 'classnames';
4
4
 
@@ -46,6 +46,9 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
46
46
  },
47
47
  ref,
48
48
  ) => {
49
+ const [scrollTop, setScrollTop] = useState(true);
50
+ const [scrollBottom, setScrollBottom] = useState(false);
51
+
49
52
  const query = '(max-width: 1023px)';
50
53
  let [nativeScrollbar] = useMatchMedia(query, () =>
51
54
  isClient() ? window.matchMedia(query).matches : true,
@@ -53,6 +56,21 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
53
56
 
54
57
  nativeScrollbar = Boolean(nativeScrollbarProp ?? nativeScrollbar);
55
58
 
59
+ const handleScroll = useCallback(
60
+ (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
61
+ const scrolledToHeader = event.currentTarget.scrollTop <= 0;
62
+ const scrolledToFooter =
63
+ event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=
64
+ event.currentTarget.scrollTop;
65
+
66
+ setScrollTop(scrolledToHeader);
67
+ setScrollBottom(scrolledToFooter);
68
+
69
+ onScroll?.(event);
70
+ },
71
+ [onScroll],
72
+ );
73
+
56
74
  const renderOption = (option: OptionShape, index: number) => (
57
75
  <Option key={option.key} {...getOptionProps(option, index)} />
58
76
  );
@@ -97,7 +115,7 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
97
115
 
98
116
  const renderWithCustomScrollbar = () => {
99
117
  const scrollableNodeProps = {
100
- onScroll,
118
+ onScroll: handleScroll,
101
119
  'data-test-id': dataTestId,
102
120
  ref: ref as React.RefObject<HTMLDivElement>,
103
121
  };
@@ -119,7 +137,7 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
119
137
  <div
120
138
  className={cn(styles.scrollable, scrollbarClassName)}
121
139
  ref={mergeRefs([listRef, ref])}
122
- onScroll={onScroll}
140
+ onScroll={handleScroll}
123
141
  >
124
142
  {renderListItems()}
125
143
  </div>
@@ -133,7 +151,12 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
133
151
  className={cn(styles.optionsList, styles[SIZE_TO_CLASSNAME_MAP[size]], className)}
134
152
  >
135
153
  {header && (
136
- <div className={styles.optionsListHeader} onMouseEnter={resetHighlightedIndex}>
154
+ <div
155
+ className={cn(styles.optionsListHeader, {
156
+ [styles.headerHighlighted]: !scrollTop,
157
+ })}
158
+ onMouseEnter={resetHighlightedIndex}
159
+ >
137
160
  {header}
138
161
  </div>
139
162
  )}
@@ -145,7 +168,9 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
145
168
  onMouseEnter={resetHighlightedIndex}
146
169
  className={cn(styles.optionsListFooter, {
147
170
  [styles.withBorder]:
148
- visibleOptions && flatOptions.length > visibleOptions,
171
+ visibleOptions &&
172
+ flatOptions.length > visibleOptions &&
173
+ !scrollBottom,
149
174
  })}
150
175
  >
151
176
  {footer}
@@ -10,7 +10,12 @@
10
10
 
11
11
  .optionsListHeader {
12
12
  box-sizing: border-box;
13
- border-bottom: 1px solid var(--color-light-neutral-300);
13
+ border-bottom: 1px solid transparent;
14
+ transition: border-color 0.2s ease;
15
+
16
+ &.headerHighlighted {
17
+ border-bottom-color: var(--color-light-neutral-300);
18
+ }
14
19
  }
15
20
 
16
21
  .optionsListFooter {
@@ -18,9 +23,10 @@
18
23
  bottom: 0;
19
24
  box-sizing: border-box;
20
25
  border-top: 1px solid transparent;
26
+ transition: border-color 0.2s ease;
21
27
 
22
28
  &.withBorder {
23
- border-top: 1px solid var(--color-light-neutral-300);
29
+ border-top-color: var(--color-light-neutral-300);
24
30
  }
25
31
  }
26
32
 
package/src/typings.ts CHANGED
@@ -105,7 +105,7 @@ export type BaseSelectProps = {
105
105
  /**
106
106
  * Дополнительный класс для поповера
107
107
  */
108
- popperClassName?: string;
108
+ popperClassName?: PopoverProps['className'];
109
109
 
110
110
  /**
111
111
  * Список вариантов выбора
@@ -347,6 +347,21 @@ export type BaseSelectProps = {
347
347
  * Показывать OptionsList, если он пустой
348
348
  */
349
349
  showEmptyOptionsList?: boolean;
350
+
351
+ /**
352
+ * Дополнительные пропсы для Popover
353
+ */
354
+ popoverProps?: Omit<
355
+ PopoverProps,
356
+ | 'update'
357
+ | 'zIndex'
358
+ | 'position'
359
+ | 'className'
360
+ | 'open'
361
+ | 'anchorElement'
362
+ | 'preventFlip'
363
+ | 'dataTestId'
364
+ >;
350
365
  };
351
366
 
352
367
  // TODO: использовать InputProps
package/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
  /**
File without changes
File without changes
File without changes
File without changes
File without changes