@snack-uikit/list 0.18.0 → 0.18.1-preview-71543426.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 (227) hide show
  1. package/dist/cjs/components/Items/AccordionItem/AccordionItem.js +78 -0
  2. package/dist/cjs/components/Items/AccordionItem/index.js +25 -0
  3. package/dist/cjs/components/Items/BaseItem/BaseItem.js +199 -0
  4. package/dist/cjs/components/Items/BaseItem/constants.js +11 -0
  5. package/dist/cjs/components/Items/BaseItem/index.js +25 -0
  6. package/dist/cjs/components/Items/GroupItem/GroupItem.js +27 -0
  7. package/dist/cjs/components/Items/GroupItem/index.js +25 -0
  8. package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.js +46 -0
  9. package/dist/cjs/components/Items/GroupSelectItem/index.js +25 -0
  10. package/dist/cjs/components/Items/NextListItem/NextListItem.js +149 -0
  11. package/dist/cjs/components/Items/NextListItem/constants.js +7 -0
  12. package/dist/cjs/components/Items/NextListItem/index.js +25 -0
  13. package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.js +59 -0
  14. package/dist/cjs/components/Items/PinGroupItem/index.js +25 -0
  15. package/dist/cjs/components/Items/SearchItem/SearchItem.js +50 -0
  16. package/dist/cjs/components/Items/SearchItem/index.js +25 -0
  17. package/dist/cjs/components/Items/hooks.js +133 -0
  18. package/dist/cjs/components/Items/index.js +29 -0
  19. package/dist/cjs/components/Items/types.js +5 -0
  20. package/dist/cjs/components/Items/utils.js +206 -0
  21. package/dist/cjs/components/Lists/Droplist/DropList.js +264 -0
  22. package/dist/cjs/components/Lists/Droplist/index.js +25 -0
  23. package/dist/cjs/components/Lists/List/List.js +199 -0
  24. package/dist/cjs/components/Lists/List/index.js +25 -0
  25. package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +142 -0
  26. package/dist/cjs/components/Lists/ListPrivate/index.js +25 -0
  27. package/dist/cjs/components/Lists/contexts/CollapseProvider.js +13 -0
  28. package/dist/cjs/components/Lists/contexts/FocusListProvider.js +12 -0
  29. package/dist/cjs/components/Lists/contexts/NewListProvider.js +51 -0
  30. package/dist/cjs/components/Lists/contexts/OpenListProvider.js +13 -0
  31. package/dist/cjs/components/Lists/contexts/SelectionProvider.js +133 -0
  32. package/dist/cjs/components/Lists/contexts/index.js +30 -0
  33. package/dist/cjs/components/Lists/hooks.js +121 -0
  34. package/dist/cjs/components/Lists/index.js +52 -0
  35. package/dist/cjs/components/Lists/types.js +5 -0
  36. package/dist/cjs/components/index.js +64 -0
  37. package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +49 -0
  38. package/dist/cjs/helperComponents/CollapseBlockPrivate/index.js +25 -0
  39. package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.js +40 -0
  40. package/dist/cjs/helperComponents/HiddenTabButton/index.js +25 -0
  41. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +74 -0
  42. package/dist/cjs/helperComponents/ItemContent/index.js +25 -0
  43. package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.js +56 -0
  44. package/dist/cjs/helperComponents/ListEmptyState/hooks.js +45 -0
  45. package/dist/cjs/helperComponents/ListEmptyState/index.js +33 -0
  46. package/dist/cjs/helperComponents/Separator/Separator.js +97 -0
  47. package/dist/cjs/helperComponents/Separator/constants.js +11 -0
  48. package/dist/cjs/helperComponents/Separator/index.js +25 -0
  49. package/dist/cjs/helperComponents/index.js +29 -0
  50. package/dist/cjs/index.js +34 -0
  51. package/dist/cjs/types.js +5 -0
  52. package/dist/esm/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
  53. package/dist/esm/components/Items/AccordionItem/index.js +1 -0
  54. package/dist/esm/components/Items/BaseItem/BaseItem.d.ts +12 -0
  55. package/dist/esm/components/Items/BaseItem/constants.d.ts +2 -0
  56. package/dist/esm/components/Items/BaseItem/index.js +1 -0
  57. package/dist/esm/components/Items/BaseItem/styles.module.css +112 -0
  58. package/dist/esm/components/Items/GroupItem/GroupItem.d.ts +6 -0
  59. package/dist/esm/components/Items/GroupItem/index.js +1 -0
  60. package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
  61. package/dist/esm/components/Items/GroupSelectItem/index.js +1 -0
  62. package/dist/esm/components/Items/NextListItem/NextListItem.d.ts +6 -0
  63. package/dist/esm/components/Items/NextListItem/constants.d.ts +2 -0
  64. package/dist/esm/components/Items/NextListItem/index.js +1 -0
  65. package/dist/esm/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
  66. package/dist/esm/components/Items/PinGroupItem/index.js +1 -0
  67. package/dist/esm/components/Items/PinGroupItem/styles.module.css +43 -0
  68. package/dist/esm/components/Items/SearchItem/SearchItem.d.ts +7 -0
  69. package/dist/esm/components/Items/SearchItem/index.js +1 -0
  70. package/dist/esm/components/Items/SearchItem/styles.module.css +11 -0
  71. package/dist/esm/components/Items/hooks.d.ts +23 -0
  72. package/dist/esm/components/Items/index.js +5 -0
  73. package/dist/esm/components/Items/styles.module.css +87 -0
  74. package/dist/esm/components/Items/types.d.ts +118 -0
  75. package/dist/esm/components/Items/utils.d.ts +35 -0
  76. package/dist/esm/components/Lists/Droplist/DropList.d.ts +2 -0
  77. package/dist/esm/components/Lists/Droplist/index.js +1 -0
  78. package/dist/esm/components/Lists/List/List.d.ts +16 -0
  79. package/dist/esm/components/Lists/List/index.js +1 -0
  80. package/dist/esm/components/Lists/ListPrivate/ListPrivate.d.ts +13 -0
  81. package/dist/esm/components/Lists/ListPrivate/index.js +1 -0
  82. package/dist/esm/components/Lists/ListPrivate/styles.module.css +51 -0
  83. package/dist/esm/components/Lists/contexts/CollapseProvider.d.ts +17 -0
  84. package/dist/esm/components/Lists/contexts/FocusListProvider.d.ts +9 -0
  85. package/dist/esm/components/Lists/contexts/NewListProvider.d.ts +33 -0
  86. package/dist/esm/components/Lists/contexts/OpenListProvider.d.ts +6 -0
  87. package/dist/esm/components/Lists/contexts/SelectionProvider.d.ts +70 -0
  88. package/dist/esm/components/Lists/contexts/index.js +6 -0
  89. package/dist/esm/components/Lists/hooks.d.ts +14 -0
  90. package/dist/esm/components/Lists/index.d.ts +5 -0
  91. package/dist/esm/components/Lists/styles.module.css +59 -0
  92. package/dist/esm/components/Lists/types.d.ts +78 -0
  93. package/dist/esm/components/index.d.ts +4 -0
  94. package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
  95. package/dist/esm/helperComponents/CollapseBlockPrivate/index.js +1 -0
  96. package/dist/esm/helperComponents/CollapseBlockPrivate/styles.module.css +38 -0
  97. package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
  98. package/dist/esm/helperComponents/HiddenTabButton/index.js +1 -0
  99. package/dist/esm/helperComponents/HiddenTabButton/styles.module.css +9 -0
  100. package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +17 -0
  101. package/dist/esm/helperComponents/ItemContent/index.js +1 -0
  102. package/dist/esm/helperComponents/ItemContent/styles.module.css +122 -0
  103. package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.d.ts +14 -0
  104. package/dist/esm/helperComponents/ListEmptyState/hooks.d.ts +10 -0
  105. package/dist/esm/helperComponents/ListEmptyState/index.js +2 -0
  106. package/dist/esm/helperComponents/ListEmptyState/styles.module.css +8 -0
  107. package/dist/esm/helperComponents/Separator/Separator.d.ts +17 -0
  108. package/dist/esm/helperComponents/Separator/constants.d.ts +2 -0
  109. package/dist/esm/helperComponents/Separator/index.js +1 -0
  110. package/dist/esm/helperComponents/Separator/styles.module.css +141 -0
  111. package/dist/esm/helperComponents/index.js +5 -0
  112. package/dist/esm/index.d.ts +4 -0
  113. package/dist/esm/types.d.ts +20 -0
  114. package/package.json +18 -16
  115. /package/dist/{components → cjs/components}/Items/AccordionItem/AccordionItem.d.ts +0 -0
  116. /package/dist/{components → cjs/components}/Items/AccordionItem/index.d.ts +0 -0
  117. /package/dist/{components → cjs/components}/Items/BaseItem/BaseItem.d.ts +0 -0
  118. /package/dist/{components → cjs/components}/Items/BaseItem/constants.d.ts +0 -0
  119. /package/dist/{components → cjs/components}/Items/BaseItem/index.d.ts +0 -0
  120. /package/dist/{components → cjs/components}/Items/BaseItem/styles.module.css +0 -0
  121. /package/dist/{components → cjs/components}/Items/GroupItem/GroupItem.d.ts +0 -0
  122. /package/dist/{components → cjs/components}/Items/GroupItem/index.d.ts +0 -0
  123. /package/dist/{components → cjs/components}/Items/GroupSelectItem/GroupSelectItem.d.ts +0 -0
  124. /package/dist/{components → cjs/components}/Items/GroupSelectItem/index.d.ts +0 -0
  125. /package/dist/{components → cjs/components}/Items/NextListItem/NextListItem.d.ts +0 -0
  126. /package/dist/{components → cjs/components}/Items/NextListItem/constants.d.ts +0 -0
  127. /package/dist/{components → cjs/components}/Items/NextListItem/index.d.ts +0 -0
  128. /package/dist/{components → cjs/components}/Items/PinGroupItem/PinGroupItem.d.ts +0 -0
  129. /package/dist/{components → cjs/components}/Items/PinGroupItem/index.d.ts +0 -0
  130. /package/dist/{components → cjs/components}/Items/PinGroupItem/styles.module.css +0 -0
  131. /package/dist/{components → cjs/components}/Items/SearchItem/SearchItem.d.ts +0 -0
  132. /package/dist/{components → cjs/components}/Items/SearchItem/index.d.ts +0 -0
  133. /package/dist/{components → cjs/components}/Items/SearchItem/styles.module.css +0 -0
  134. /package/dist/{components → cjs/components}/Items/hooks.d.ts +0 -0
  135. /package/dist/{components → cjs/components}/Items/index.d.ts +0 -0
  136. /package/dist/{components → cjs/components}/Items/styles.module.css +0 -0
  137. /package/dist/{components → cjs/components}/Items/types.d.ts +0 -0
  138. /package/dist/{components → cjs/components}/Items/utils.d.ts +0 -0
  139. /package/dist/{components → cjs/components}/Lists/Droplist/DropList.d.ts +0 -0
  140. /package/dist/{components → cjs/components}/Lists/Droplist/index.d.ts +0 -0
  141. /package/dist/{components → cjs/components}/Lists/List/List.d.ts +0 -0
  142. /package/dist/{components → cjs/components}/Lists/List/index.d.ts +0 -0
  143. /package/dist/{components → cjs/components}/Lists/ListPrivate/ListPrivate.d.ts +0 -0
  144. /package/dist/{components → cjs/components}/Lists/ListPrivate/index.d.ts +0 -0
  145. /package/dist/{components → cjs/components}/Lists/ListPrivate/styles.module.css +0 -0
  146. /package/dist/{components → cjs/components}/Lists/contexts/CollapseProvider.d.ts +0 -0
  147. /package/dist/{components → cjs/components}/Lists/contexts/FocusListProvider.d.ts +0 -0
  148. /package/dist/{components → cjs/components}/Lists/contexts/NewListProvider.d.ts +0 -0
  149. /package/dist/{components → cjs/components}/Lists/contexts/OpenListProvider.d.ts +0 -0
  150. /package/dist/{components → cjs/components}/Lists/contexts/SelectionProvider.d.ts +0 -0
  151. /package/dist/{components → cjs/components}/Lists/contexts/index.d.ts +0 -0
  152. /package/dist/{components → cjs/components}/Lists/hooks.d.ts +0 -0
  153. /package/dist/{components → cjs/components}/Lists/index.d.ts +0 -0
  154. /package/dist/{components → cjs/components}/Lists/styles.module.css +0 -0
  155. /package/dist/{components → cjs/components}/Lists/types.d.ts +0 -0
  156. /package/dist/{components → cjs/components}/index.d.ts +0 -0
  157. /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +0 -0
  158. /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/index.d.ts +0 -0
  159. /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/styles.module.css +0 -0
  160. /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/HiddenTabButton.d.ts +0 -0
  161. /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/index.d.ts +0 -0
  162. /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/styles.module.css +0 -0
  163. /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/ItemContent.d.ts +0 -0
  164. /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/index.d.ts +0 -0
  165. /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/styles.module.css +0 -0
  166. /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/ListEmptyState.d.ts +0 -0
  167. /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/hooks.d.ts +0 -0
  168. /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/index.d.ts +0 -0
  169. /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/styles.module.css +0 -0
  170. /package/dist/{helperComponents → cjs/helperComponents}/Separator/Separator.d.ts +0 -0
  171. /package/dist/{helperComponents → cjs/helperComponents}/Separator/constants.d.ts +0 -0
  172. /package/dist/{helperComponents → cjs/helperComponents}/Separator/index.d.ts +0 -0
  173. /package/dist/{helperComponents → cjs/helperComponents}/Separator/styles.module.css +0 -0
  174. /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
  175. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  176. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  177. /package/dist/{components → esm/components}/Items/AccordionItem/AccordionItem.js +0 -0
  178. /package/dist/{components/Items/AccordionItem/index.js → esm/components/Items/AccordionItem/index.d.ts} +0 -0
  179. /package/dist/{components → esm/components}/Items/BaseItem/BaseItem.js +0 -0
  180. /package/dist/{components → esm/components}/Items/BaseItem/constants.js +0 -0
  181. /package/dist/{components/Items/BaseItem/index.js → esm/components/Items/BaseItem/index.d.ts} +0 -0
  182. /package/dist/{components → esm/components}/Items/GroupItem/GroupItem.js +0 -0
  183. /package/dist/{components/Items/GroupItem/index.js → esm/components/Items/GroupItem/index.d.ts} +0 -0
  184. /package/dist/{components → esm/components}/Items/GroupSelectItem/GroupSelectItem.js +0 -0
  185. /package/dist/{components/Items/GroupSelectItem/index.js → esm/components/Items/GroupSelectItem/index.d.ts} +0 -0
  186. /package/dist/{components → esm/components}/Items/NextListItem/NextListItem.js +0 -0
  187. /package/dist/{components → esm/components}/Items/NextListItem/constants.js +0 -0
  188. /package/dist/{components/Items/NextListItem/index.js → esm/components/Items/NextListItem/index.d.ts} +0 -0
  189. /package/dist/{components → esm/components}/Items/PinGroupItem/PinGroupItem.js +0 -0
  190. /package/dist/{components/Items/PinGroupItem/index.js → esm/components/Items/PinGroupItem/index.d.ts} +0 -0
  191. /package/dist/{components → esm/components}/Items/SearchItem/SearchItem.js +0 -0
  192. /package/dist/{components/Items/SearchItem/index.js → esm/components/Items/SearchItem/index.d.ts} +0 -0
  193. /package/dist/{components → esm/components}/Items/hooks.js +0 -0
  194. /package/dist/{components/Items/index.js → esm/components/Items/index.d.ts} +0 -0
  195. /package/dist/{components → esm/components}/Items/types.js +0 -0
  196. /package/dist/{components → esm/components}/Items/utils.js +0 -0
  197. /package/dist/{components → esm/components}/Lists/Droplist/DropList.js +0 -0
  198. /package/dist/{components/Lists/Droplist/index.js → esm/components/Lists/Droplist/index.d.ts} +0 -0
  199. /package/dist/{components → esm/components}/Lists/List/List.js +0 -0
  200. /package/dist/{components/Lists/List/index.js → esm/components/Lists/List/index.d.ts} +0 -0
  201. /package/dist/{components → esm/components}/Lists/ListPrivate/ListPrivate.js +0 -0
  202. /package/dist/{components/Lists/ListPrivate/index.js → esm/components/Lists/ListPrivate/index.d.ts} +0 -0
  203. /package/dist/{components → esm/components}/Lists/contexts/CollapseProvider.js +0 -0
  204. /package/dist/{components → esm/components}/Lists/contexts/FocusListProvider.js +0 -0
  205. /package/dist/{components → esm/components}/Lists/contexts/NewListProvider.js +0 -0
  206. /package/dist/{components → esm/components}/Lists/contexts/OpenListProvider.js +0 -0
  207. /package/dist/{components → esm/components}/Lists/contexts/SelectionProvider.js +0 -0
  208. /package/dist/{components/Lists/contexts/index.js → esm/components/Lists/contexts/index.d.ts} +0 -0
  209. /package/dist/{components → esm/components}/Lists/hooks.js +0 -0
  210. /package/dist/{components → esm/components}/Lists/index.js +0 -0
  211. /package/dist/{components → esm/components}/Lists/types.js +0 -0
  212. /package/dist/{components → esm/components}/index.js +0 -0
  213. /package/dist/{helperComponents → esm/helperComponents}/CollapseBlockPrivate/CollapseBlockPrivate.js +0 -0
  214. /package/dist/{helperComponents/CollapseBlockPrivate/index.js → esm/helperComponents/CollapseBlockPrivate/index.d.ts} +0 -0
  215. /package/dist/{helperComponents → esm/helperComponents}/HiddenTabButton/HiddenTabButton.js +0 -0
  216. /package/dist/{helperComponents/HiddenTabButton/index.js → esm/helperComponents/HiddenTabButton/index.d.ts} +0 -0
  217. /package/dist/{helperComponents → esm/helperComponents}/ItemContent/ItemContent.js +0 -0
  218. /package/dist/{helperComponents/ItemContent/index.js → esm/helperComponents/ItemContent/index.d.ts} +0 -0
  219. /package/dist/{helperComponents → esm/helperComponents}/ListEmptyState/ListEmptyState.js +0 -0
  220. /package/dist/{helperComponents → esm/helperComponents}/ListEmptyState/hooks.js +0 -0
  221. /package/dist/{helperComponents/ListEmptyState/index.js → esm/helperComponents/ListEmptyState/index.d.ts} +0 -0
  222. /package/dist/{helperComponents → esm/helperComponents}/Separator/Separator.js +0 -0
  223. /package/dist/{helperComponents → esm/helperComponents}/Separator/constants.js +0 -0
  224. /package/dist/{helperComponents/Separator/index.js → esm/helperComponents/Separator/index.d.ts} +0 -0
  225. /package/dist/{helperComponents/index.js → esm/helperComponents/index.d.ts} +0 -0
  226. /package/dist/{index.js → esm/index.js} +0 -0
  227. /package/dist/{types.js → esm/types.js} +0 -0
@@ -0,0 +1,59 @@
1
+ .listContainer{
2
+ display:flex;
3
+ flex-direction:column;
4
+ height:100%;
5
+ margin:0;
6
+ padding:0;
7
+ }
8
+ .listContainer:focus-visible{
9
+ border:none;
10
+ outline:none;
11
+ }
12
+ .listContainer:focus-visible[data-active]{
13
+ outline-width:var(--border-state-focus-s-border-width, 2px);
14
+ outline-style:var(--border-state-focus-s-border-style, solid);
15
+ outline-color:var(--border-state-focus-s-border-color, );
16
+ outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
17
+ outline-color:var(--sys-available-complementary, #1c1c24);
18
+ }
19
+ .listContainer:focus-visible[data-active] *{
20
+ cursor:inherit;
21
+ }
22
+ .listContainer li,
23
+ .listContainer ul{
24
+ list-style-type:none;
25
+ }
26
+
27
+ .wrapper{
28
+ position:relative;
29
+ overflow:hidden;
30
+ display:block;
31
+ box-sizing:border-box;
32
+ height:100%;
33
+ }
34
+ .wrapper:has(.listContainer:focus-visible){
35
+ outline-width:var(--border-state-focus-s-border-width, 2px);
36
+ outline-style:var(--border-state-focus-s-border-style, solid);
37
+ outline-color:var(--border-state-focus-s-border-color, );
38
+ outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
39
+ outline-color:var(--sys-available-complementary, #1c1c24);
40
+ }
41
+ .wrapper li,
42
+ .wrapper ul{
43
+ list-style-type:none;
44
+ }
45
+
46
+ .scrollContainerS{
47
+ height:auto;
48
+ max-height:calc(var(--dimension-1m, 8px) * 32);
49
+ }
50
+
51
+ .scrollContainerM{
52
+ height:auto;
53
+ max-height:calc(var(--dimension-1m, 8px) * 40);
54
+ }
55
+
56
+ .scrollContainerL{
57
+ height:auto;
58
+ max-height:calc(var(--dimension-1m, 8px) * 48);
59
+ }
@@ -0,0 +1,78 @@
1
+ import { FocusEvent, KeyboardEvent, ReactNode, RefObject } from 'react';
2
+ import { DropdownProps } from '@snack-uikit/dropdown';
3
+ import { WithSupportProps } from '@snack-uikit/utils';
4
+ import { EmptyStateProps } from '../../helperComponents';
5
+ import { ScrollProps, SearchState } from '../../types';
6
+ import { FlattenBaseItem, Item, ItemId } from '../Items';
7
+ import { CollapseState, PublicListContextType, SelectionState } from './contexts';
8
+ export type EmptyState = {
9
+ dataFiltered?: boolean;
10
+ dataError?: boolean;
11
+ /** Экран при отстутствии данных */
12
+ noDataState?: EmptyStateProps;
13
+ /** Экран при отстутствии результатов поиска или фильтров */
14
+ noResultsState?: EmptyStateProps;
15
+ /** Экран при ошибке запроса */
16
+ errorDataState?: EmptyStateProps;
17
+ };
18
+ export type ListProps = WithSupportProps<{
19
+ /** Основные элементы списка */
20
+ items: Item[];
21
+ /** Элементы списка, закрепленные сверху */
22
+ pinTop?: Item[];
23
+ /** Элементы списка, закрепленные снизу */
24
+ pinBottom?: Item[];
25
+ /**
26
+ * Кастомизируемый элемент в конце списка
27
+ * @type ReactNode;
28
+ */
29
+ footer?: ReactNode;
30
+ /** Список ссылок на кастомные элементы, помещенные в специальную секцию внизу списка */
31
+ footerActiveElementsRefs?: RefObject<HTMLElement>[];
32
+ /** Настройки поисковой строки */
33
+ search?: SearchState;
34
+ /** Tab Index */
35
+ tabIndex?: number;
36
+ /** Настройки раскрытия элементов */
37
+ collapse?: CollapseState;
38
+ /** CSS-класс */
39
+ className?: string;
40
+ onKeyDown?(e: KeyboardEvent<HTMLElement>): void;
41
+ /** Флаг, отвещающий за состояние загрузки списка */
42
+ loading?: boolean;
43
+ } & SelectionState & PublicListContextType & ScrollProps & EmptyState>;
44
+ export type DroplistProps = {
45
+ /** Ссылка на элемент-триггер для дроплиста */
46
+ triggerElemRef?: RefObject<HTMLElement>;
47
+ /** Ссылка на элемент выпадающего списка */
48
+ listRef?: RefObject<HTMLElement>;
49
+ /**
50
+ * Закрывать выпадающий список после клика на базовый айтем.
51
+ *
52
+ * Работает в режимах selection: 'none' | 'single'
53
+ *
54
+ * @default false
55
+ */
56
+ closeDroplistOnItemClick?: boolean;
57
+ /** Триггер для дроплиста
58
+ * @type ReactNode | ({onKeyDown}) => ReactNode
59
+ *
60
+ * Рендер функция принимает аргументы `onKeyDown` - хендлер ввода, для поддержки управления с клавиатуры
61
+ */
62
+ children: ReactNode | ((params: {
63
+ onKeyDown?: (e: KeyboardEvent<HTMLElement>) => void;
64
+ }) => ReactNode);
65
+ } & Pick<DropdownProps, 'trigger' | 'placement' | 'widthStrategy' | 'open' | 'onOpenChange' | 'triggerClassName'> & Omit<ListProps, 'tabIndex' | 'onKeyDown'>;
66
+ export type ListPrivateProps = Omit<ListProps, 'pinTop' | 'pinBottom' | 'items'> & {
67
+ nested?: boolean;
68
+ active?: boolean;
69
+ tabIndex?: number;
70
+ onFocus?(e: FocusEvent<HTMLElement>): void;
71
+ onBlur?(e: FocusEvent<HTMLElement>): void;
72
+ onKeyDown?(e: KeyboardEvent<HTMLElement>): void;
73
+ limitedScrollHeight?: boolean;
74
+ searchItem?: FlattenBaseItem;
75
+ pinTop?: ItemId[];
76
+ items: ItemId[];
77
+ pinBottom?: ItemId[];
78
+ };
@@ -0,0 +1,4 @@
1
+ export * from './Lists';
2
+ export type { AccordionItemProps, NextListItemProps, BaseItemProps, GroupItemProps, ItemProps, GroupSelectItemProps, ItemId, } from './Items';
3
+ export { isAccordionItemProps, isBaseItemProps, isGroupItemProps, isNextListItemProps, isGroupSelectItem, } from './Items';
4
+ export { useGroupItemSelection } from './Items/hooks';
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { WithSupportProps } from '@snack-uikit/utils';
3
+ export type CollapseBlockPrivateProps = WithSupportProps<{
4
+ children: ReactNode;
5
+ header: ReactNode;
6
+ expanded: boolean;
7
+ className?: string;
8
+ }>;
9
+ export declare function CollapseBlockPrivate({ children, expanded, className, header, ...rest }: CollapseBlockPrivateProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './CollapseBlockPrivate';
@@ -0,0 +1,38 @@
1
+ .accordion{
2
+ display:flex;
3
+ flex-direction:column;
4
+ box-sizing:border-box;
5
+ transition:gap 300ms;
6
+ }
7
+ .accordion::-webkit-scrollbar{
8
+ width:0;
9
+ }
10
+ .accordion[aria-expanded=false]{
11
+ gap:0;
12
+ }
13
+
14
+ .contentWrapper{
15
+ box-sizing:border-box;
16
+ width:100%;
17
+ }
18
+ .contentWrapper[aria-hidden=false] > div[data-content]{
19
+ display:block;
20
+ }
21
+
22
+ .content{
23
+ position:relative;
24
+ display:none;
25
+ box-sizing:border-box;
26
+ width:100%;
27
+ }
28
+ .content::before{
29
+ pointer-events:none;
30
+ content:"";
31
+ position:absolute;
32
+ top:0;
33
+ left:0;
34
+ width:100%;
35
+ height:100%;
36
+ opacity:var(--opacity-a004, 0.04);
37
+ background-color:var(--sys-neutral-accent-default, #787b8a);
38
+ }
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ type HiddenTabButtonProps = {
3
+ listRef: RefObject<HTMLElement>;
4
+ tabIndex?: number;
5
+ };
6
+ export declare const HiddenTabButton: import("react").ForwardRefExoticComponent<HiddenTabButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
7
+ export {};
@@ -0,0 +1 @@
1
+ export * from './HiddenTabButton';
@@ -0,0 +1,9 @@
1
+ .hiddenBtn{
2
+ position:absolute;
3
+ width:0;
4
+ height:0;
5
+ margin:0;
6
+ padding:0;
7
+ border:none;
8
+ outline:none;
9
+ }
@@ -0,0 +1,17 @@
1
+ import { TruncateStringProps } from '@snack-uikit/truncate-string';
2
+ import { WithSupportProps } from '@snack-uikit/utils';
3
+ type TruncateProps = {
4
+ option?: number;
5
+ description?: number;
6
+ variant?: TruncateStringProps['variant'];
7
+ };
8
+ export type ItemContentProps = WithSupportProps<{
9
+ option: string | number;
10
+ caption?: string;
11
+ description?: string;
12
+ truncate?: TruncateProps;
13
+ disabled?: boolean;
14
+ className?: string;
15
+ }>;
16
+ export declare function ItemContent({ truncate: truncateProp, caption, description, option, className, disabled, ...rest }: ItemContentProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1 @@
1
+ export * from './ItemContent';
@@ -0,0 +1,122 @@
1
+ .headline{
2
+ display:flex;
3
+ }
4
+
5
+ .label{
6
+ overflow:hidden;
7
+ flex:1;
8
+ color:var(--sys-neutral-text-main, #41424e);
9
+ }
10
+
11
+ .caption{
12
+ overflow:hidden;
13
+ color:var(--sys-neutral-text-light, #8b8e9b);
14
+ text-overflow:ellipsis;
15
+ white-space:nowrap;
16
+ }
17
+
18
+ .description{
19
+ color:var(--sys-neutral-text-support, #6d707f);
20
+ }
21
+
22
+ .content{
23
+ overflow:hidden;
24
+ flex-grow:1;
25
+ flex-shrink:1;
26
+ box-sizing:border-box;
27
+ }
28
+ .content[data-size=s] .headline{
29
+ gap:var(--space-drop-list-item-s-container-headline-gap, 8px);
30
+ min-height:var(--size-drop-list-item-headline, 24px);
31
+ }
32
+ .content[data-size=s] .label{
33
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
34
+ font-weight:var(--sans-body-s-font-weight, Regular);
35
+ line-height:var(--sans-body-s-line-height, 16px);
36
+ font-size:var(--sans-body-s-font-size, 12px);
37
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
38
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
39
+ display:flex;
40
+ align-items:center;
41
+ }
42
+ .content[data-size=s] .caption{
43
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
44
+ font-weight:var(--sans-body-s-font-weight, Regular);
45
+ line-height:var(--sans-body-s-line-height, 16px);
46
+ font-size:var(--sans-body-s-font-size, 12px);
47
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
48
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
49
+ }
50
+ .content[data-size=s] .description{
51
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
52
+ font-weight:var(--sans-body-s-font-weight, Regular);
53
+ line-height:var(--sans-body-s-line-height, 16px);
54
+ font-size:var(--sans-body-s-font-size, 12px);
55
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
56
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
57
+ }
58
+ .content[data-size=m] .headline{
59
+ gap:var(--space-drop-list-item-m-container-headline-gap, 8px);
60
+ min-height:var(--size-drop-list-item-headline, 24px);
61
+ }
62
+ .content[data-size=m] .label{
63
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
64
+ font-weight:var(--sans-body-m-font-weight, Regular);
65
+ line-height:var(--sans-body-m-line-height, 20px);
66
+ font-size:var(--sans-body-m-font-size, 14px);
67
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
68
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
69
+ display:flex;
70
+ align-items:center;
71
+ }
72
+ .content[data-size=m] .caption{
73
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
74
+ font-weight:var(--sans-body-s-font-weight, Regular);
75
+ line-height:var(--sans-body-s-line-height, 16px);
76
+ font-size:var(--sans-body-s-font-size, 12px);
77
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
78
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
79
+ }
80
+ .content[data-size=m] .description{
81
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
82
+ font-weight:var(--sans-body-s-font-weight, Regular);
83
+ line-height:var(--sans-body-s-line-height, 16px);
84
+ font-size:var(--sans-body-s-font-size, 12px);
85
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
86
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
87
+ }
88
+ .content[data-size=l] .headline{
89
+ gap:var(--space-drop-list-item-l-container-headline-gap, 8px);
90
+ min-height:var(--size-drop-list-item-headline, 24px);
91
+ }
92
+ .content[data-size=l] .label{
93
+ font-family:var(--sans-body-l-font-family, SB Sans Interface);
94
+ font-weight:var(--sans-body-l-font-weight, Regular);
95
+ line-height:var(--sans-body-l-line-height, 24px);
96
+ font-size:var(--sans-body-l-font-size, 16px);
97
+ letter-spacing:var(--sans-body-l-letter-spacing, 0.1px);
98
+ paragraph-spacing:var(--sans-body-l-paragraph-spacing, 8.8px);
99
+ display:flex;
100
+ align-items:center;
101
+ }
102
+ .content[data-size=l] .caption{
103
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
104
+ font-weight:var(--sans-body-m-font-weight, Regular);
105
+ line-height:var(--sans-body-m-line-height, 20px);
106
+ font-size:var(--sans-body-m-font-size, 14px);
107
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
108
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
109
+ }
110
+ .content[data-size=l] .description{
111
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
112
+ font-weight:var(--sans-body-m-font-weight, Regular);
113
+ line-height:var(--sans-body-m-line-height, 20px);
114
+ font-size:var(--sans-body-m-font-size, 14px);
115
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
116
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
117
+ }
118
+ .content[data-disabled] .label,
119
+ .content[data-disabled] .description,
120
+ .content[data-disabled] .caption{
121
+ color:var(--sys-neutral-text-disabled, #aaaebd);
122
+ }
@@ -0,0 +1,14 @@
1
+ import { InfoBlockProps } from '@snack-uikit/info-block';
2
+ export type EmptyStateProps = Pick<InfoBlockProps, 'description' | 'icon' | 'data-test-id' | 'footer'>;
3
+ export type ListEmptyState = {
4
+ emptyStates: {
5
+ noDataState: EmptyStateProps;
6
+ noResultsState: EmptyStateProps;
7
+ errorDataState: EmptyStateProps;
8
+ };
9
+ loading?: boolean;
10
+ dataError?: boolean;
11
+ dataFiltered?: boolean;
12
+ hasNoItems: boolean;
13
+ };
14
+ export declare function ListEmptyState({ dataError, dataFiltered, hasNoItems, emptyStates, loading }: ListEmptyState): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import { EmptyStateProps } from './ListEmptyState';
2
+ export declare function useEmptyState({ noDataState: noDataStateProp, noResultsState: noResultsStateProp, errorDataState: errorDataStateProp, }: {
3
+ noDataState?: EmptyStateProps;
4
+ noResultsState?: EmptyStateProps;
5
+ errorDataState?: EmptyStateProps;
6
+ }): {
7
+ noDataState: EmptyStateProps;
8
+ noResultsState: EmptyStateProps;
9
+ errorDataState: EmptyStateProps;
10
+ };
@@ -0,0 +1,2 @@
1
+ export * from './ListEmptyState';
2
+ export { useEmptyState } from './hooks';
@@ -0,0 +1,8 @@
1
+ .listEmptyStateWrapper{
2
+ display:flex;
3
+ flex-direction:column;
4
+ align-items:center;
5
+ justify-content:center;
6
+ box-sizing:border-box;
7
+ padding:var(--dimension-1m, 8px);
8
+ }
@@ -0,0 +1,17 @@
1
+ import { ForwardedRef, MouseEvent } from 'react';
2
+ import { TruncateStringProps } from '@snack-uikit/truncate-string';
3
+ export type SeparatorProps = {
4
+ label?: string;
5
+ truncate?: {
6
+ variant?: TruncateStringProps['variant'];
7
+ };
8
+ mode?: 'primary' | 'secondary';
9
+ divider?: boolean;
10
+ selectButton?: {
11
+ onClick?(e: MouseEvent<HTMLElement>): void;
12
+ indeterminate?: boolean;
13
+ checked?: boolean;
14
+ itemRef?: ForwardedRef<HTMLElement>;
15
+ };
16
+ };
17
+ export declare function Separator({ label, truncate, divider, mode, selectButton }: SeparatorProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import { ButtonFunctionProps } from '@snack-uikit/button';
2
+ export declare const SELECT_BUTTON_SIZE_MAP: Record<string, ButtonFunctionProps['size']>;
@@ -0,0 +1 @@
1
+ export * from './Separator';
@@ -0,0 +1,141 @@
1
+ .separatorWithLabel{
2
+ display:flex;
3
+ gap:var(--dimension-1m, 8px);
4
+ align-items:flex-end;
5
+ box-sizing:border-box;
6
+ width:100%;
7
+ min-width:100%;
8
+ }
9
+ .separatorWithLabel[data-size=s]{
10
+ padding-top:var(--space-drop-list-item-s-container-separator-subheader-vertical-padding, 4px);
11
+ padding-bottom:var(--space-drop-list-item-s-container-separator-subheader-vertical-padding, 4px);
12
+ padding-left:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
13
+ padding-right:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
14
+ gap:var(--space-drop-list-item-s-container-gap, 8px);
15
+ height:var(--size-drop-list-item-s-container-separator-subheader-height, 32px);
16
+ }
17
+ .separatorWithLabel[data-size=s] .label[data-mode=primary]{
18
+ font-family:var(--sans-label-m-font-family, SB Sans Interface);
19
+ font-weight:var(--sans-label-m-font-weight, Semibold);
20
+ line-height:var(--sans-label-m-line-height, 16px);
21
+ font-size:var(--sans-label-m-font-size, 12px);
22
+ letter-spacing:var(--sans-label-m-letter-spacing, 0px);
23
+ paragraph-spacing:var(--sans-label-m-paragraph-spacing, 6.6px);
24
+ }
25
+ .separatorWithLabel[data-size=s] .label[data-mode=secondary]{
26
+ font-family:var(--light-label-m-font-family, SB Sans Interface);
27
+ font-weight:var(--light-label-m-font-weight, Regular);
28
+ line-height:var(--light-label-m-line-height, 16px);
29
+ font-size:var(--light-label-m-font-size, 12px);
30
+ letter-spacing:var(--light-label-m-letter-spacing, 0px);
31
+ paragraph-spacing:var(--light-label-m-paragraph-spacing, 6.6px);
32
+ }
33
+ .separatorWithLabel[data-size=m]{
34
+ padding-top:var(--space-drop-list-item-m-container-separator-subheader-vertical-padding, 5px);
35
+ padding-bottom:var(--space-drop-list-item-m-container-separator-subheader-vertical-padding, 5px);
36
+ padding-left:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
37
+ padding-right:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
38
+ gap:var(--space-drop-list-item-m-container-gap, 8px);
39
+ height:var(--size-drop-list-item-m-container-separator-subheader-height, 40px);
40
+ }
41
+ .separatorWithLabel[data-size=m] .label[data-mode=primary]{
42
+ font-family:var(--sans-label-l-font-family, SB Sans Interface);
43
+ font-weight:var(--sans-label-l-font-weight, Semibold);
44
+ line-height:var(--sans-label-l-line-height, 20px);
45
+ font-size:var(--sans-label-l-font-size, 14px);
46
+ letter-spacing:var(--sans-label-l-letter-spacing, 0px);
47
+ paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
48
+ }
49
+ .separatorWithLabel[data-size=m] .label[data-mode=secondary]{
50
+ font-family:var(--light-label-l-font-family, SB Sans Interface);
51
+ font-weight:var(--light-label-l-font-weight, Regular);
52
+ line-height:var(--light-label-l-line-height, 20px);
53
+ font-size:var(--light-label-l-font-size, 14px);
54
+ letter-spacing:var(--light-label-l-letter-spacing, 0px);
55
+ paragraph-spacing:var(--light-label-l-paragraph-spacing, 7.7px);
56
+ }
57
+ .separatorWithLabel[data-size=l]{
58
+ padding-top:var(--space-drop-list-item-l-container-separator-subheader-vertical-padding, 6px);
59
+ padding-bottom:var(--space-drop-list-item-l-container-separator-subheader-vertical-padding, 6px);
60
+ padding-left:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
61
+ padding-right:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
62
+ gap:var(--space-drop-list-item-l-container-gap, 8px);
63
+ height:var(--size-drop-list-item-l-container-separator-subheader-height, 48px);
64
+ }
65
+ .separatorWithLabel[data-size=l] .label[data-mode=primary]{
66
+ font-family:var(--sans-title-m-font-family, SB Sans Interface);
67
+ font-weight:var(--sans-title-m-font-weight, Semibold);
68
+ line-height:var(--sans-title-m-line-height, 24px);
69
+ font-size:var(--sans-title-m-font-size, 16px);
70
+ letter-spacing:var(--sans-title-m-letter-spacing, 0.15px);
71
+ paragraph-spacing:var(--sans-title-m-paragraph-spacing, 8.8px);
72
+ }
73
+ .separatorWithLabel[data-size=l] .label[data-mode=secondary]{
74
+ font-family:var(--light-title-m-font-family, SB Sans Interface);
75
+ font-weight:var(--light-title-m-font-weight, Regular);
76
+ line-height:var(--light-title-m-line-height, 24px);
77
+ font-size:var(--light-title-m-font-size, 16px);
78
+ letter-spacing:var(--light-title-m-letter-spacing, 0.15px);
79
+ paragraph-spacing:var(--light-title-m-paragraph-spacing, 8.8px);
80
+ }
81
+
82
+ .separatorWithoutLabel{
83
+ display:flex;
84
+ align-items:flex-end;
85
+ box-sizing:border-box;
86
+ }
87
+ .separatorWithoutLabel[data-size=s]{
88
+ padding-top:var(--space-drop-list-item-s-container-separator-subheader-vertical-padding, 4px);
89
+ padding-bottom:var(--space-drop-list-item-s-container-separator-subheader-vertical-padding, 4px);
90
+ padding-left:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
91
+ padding-right:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
92
+ }
93
+ .separatorWithoutLabel[data-size=m]{
94
+ padding-top:var(--space-drop-list-item-m-container-separator-subheader-vertical-padding, 5px);
95
+ padding-bottom:var(--space-drop-list-item-m-container-separator-subheader-vertical-padding, 5px);
96
+ padding-left:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
97
+ padding-right:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
98
+ }
99
+ .separatorWithoutLabel[data-size=l]{
100
+ padding-top:var(--space-drop-list-item-l-container-separator-subheader-vertical-padding, 6px);
101
+ padding-bottom:var(--space-drop-list-item-l-container-separator-subheader-vertical-padding, 6px);
102
+ padding-left:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
103
+ padding-right:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
104
+ }
105
+
106
+ .label{
107
+ overflow:hidden;
108
+ flex-shrink:1;
109
+ }
110
+ .label[data-mode=primary]{
111
+ color:var(--sys-neutral-text-main, #41424e);
112
+ }
113
+ .label[data-mode=secondary]{
114
+ color:var(--sys-neutral-text-light, #8b8e9b);
115
+ }
116
+
117
+ hr.divider{
118
+ flex:1;
119
+ width:auto;
120
+ min-width:0;
121
+ }
122
+
123
+ .selectButton{
124
+ display:flex;
125
+ justify-content:flex-end;
126
+ }
127
+ .selectButton[data-weight=primary]{
128
+ --divider-height:1px;
129
+ }
130
+ .selectButton[data-weight=secondary]{
131
+ --divider-height:0.5px;
132
+ }
133
+ .selectButton[data-size=s]{
134
+ transform:translateY(calc((var(--size-button-xs, 24px) - var(--sans-label-s-line-height, 14px)) / 2 - var(--divider-height, 0)));
135
+ }
136
+ .selectButton[data-size=m]{
137
+ transform:translateY(calc((var(--size-button-s, 32px) - var(--sans-label-m-line-height, 16px)) / 2 - var(--divider-height, 0)));
138
+ }
139
+ .selectButton[data-size=l]{
140
+ transform:translateY(calc((var(--size-button-m, 40px) - var(--sans-label-l-line-height, 20px)) / 2 - var(--divider-height, 0)));
141
+ }
@@ -0,0 +1,5 @@
1
+ export * from './CollapseBlockPrivate';
2
+ export * from './Separator';
3
+ export * from './HiddenTabButton';
4
+ export * from './ListEmptyState';
5
+ export * from './ItemContent';
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export type { SearchState } from './types';
3
+ export { kindFlattenItems } from './components/Items';
4
+ export * from './helperComponents/ItemContent';
@@ -0,0 +1,20 @@
1
+ import { RefObject } from 'react';
2
+ import { ScrollProps as OriginalScrollProps } from '@snack-uikit/scroll';
3
+ export type SearchState = {
4
+ placeholder?: string;
5
+ loading?: boolean;
6
+ value?: string;
7
+ onChange(value: string): void;
8
+ };
9
+ export type ScrollProps = {
10
+ /** Включить ли скролл для основной части списка */
11
+ scroll?: boolean;
12
+ /** Ссылка на элемент, обозначающий самый конец прокручиваемого списка */
13
+ scrollRef?: RefObject<HTMLElement>;
14
+ /** Ссылка на контейнер, который скроллится */
15
+ scrollContainerRef?: RefObject<HTMLElement>;
16
+ /** Отключает возможность взаимодействовать со скролбарами мышью. */
17
+ untouchableScrollbars?: boolean;
18
+ /** Колбек на скролл прокручиваемого списка */
19
+ onScroll?: OriginalScrollProps['onScroll'];
20
+ };