@snack-uikit/list 0.25.0 → 0.26.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 0.26.0 (2025-02-25)
7
+
8
+
9
+ ### Features
10
+
11
+ * **PDS-1183:** add prop barHideStrategy for Scroll ([718a6e5](https://github.com/cloud-ru-tech/snack-uikit/commit/718a6e56331994eaaed0bf22e2b8437f67081abe))
12
+
13
+
14
+
15
+
16
+
6
17
  # 0.25.0 (2025-02-10)
7
18
 
8
19
 
package/README.md CHANGED
@@ -85,6 +85,7 @@
85
85
  | scrollRef | `RefObject<HTMLElement>` | - | Ссылка на элемент, обозначающий самый конец прокручиваемого списка |
86
86
  | scrollContainerRef | `RefObject<HTMLElement>` | - | Ссылка на контейнер, который скроллится |
87
87
  | untouchableScrollbars | `boolean` | - | Отключает возможность взаимодействовать со скролбарами мышью. |
88
+ | barHideStrategy | enum BarHideStrategy: `"scroll"`, `"move"`, `"never"`, `"leave"` | - | Управление скрытием скролл баров: <br> - `Never` - показывать всегда <br> - `Leave` - скрывать когда курсор покидает компонент <br> - `Scroll` - показывать только когда происходит скроллинг <br> - `Move` - показывать при движении курсора над компонентом |
88
89
  | onScroll | `(event?: Event) => void` | - | Колбек на скролл прокручиваемого списка |
89
90
  | dataFiltered | `boolean` | - | |
90
91
  | dataError | `boolean` | - | |
@@ -119,6 +120,7 @@
119
120
  | scrollRef | `RefObject<HTMLElement>` | - | Ссылка на элемент, обозначающий самый конец прокручиваемого списка |
120
121
  | scrollContainerRef | `RefObject<HTMLElement>` | - | Ссылка на контейнер, который скроллится |
121
122
  | untouchableScrollbars | `boolean` | - | Отключает возможность взаимодействовать со скролбарами мышью. |
123
+ | barHideStrategy | enum BarHideStrategy: `"scroll"`, `"move"`, `"never"`, `"leave"` | - | Управление скрытием скролл баров: <br> - `Never` - показывать всегда <br> - `Leave` - скрывать когда курсор покидает компонент <br> - `Scroll` - показывать только когда происходит скроллинг <br> - `Move` - показывать при движении курсора над компонентом |
122
124
  | onScroll | `(event?: Event) => void` | - | Колбек на скролл прокручиваемого списка |
123
125
  | dataFiltered | `boolean` | - | |
124
126
  | dataError | `boolean` | - | |
@@ -59,9 +59,10 @@ exports.ListPrivate = (0, react_1.forwardRef)((_a, ref) => {
59
59
  dataFiltered,
60
60
  scrollToSelectedItem = false,
61
61
  virtualized = false,
62
- scrollContainerClassName
62
+ scrollContainerClassName,
63
+ barHideStrategy = 'never'
63
64
  } = _a,
64
- props = __rest(_a, ["items", "pinTop", "pinBottom", "onKeyDown", "onBlur", "onFocus", "tabIndex", "active", "scroll", "nested", "search", "searchItem", "scrollRef", "scrollContainerRef", "onScroll", "footer", "loading", "limitedScrollHeight", "untouchableScrollbars", "className", "noDataState", "noResultsState", "errorDataState", "dataError", "dataFiltered", "scrollToSelectedItem", "virtualized", "scrollContainerClassName"]);
65
+ props = __rest(_a, ["items", "pinTop", "pinBottom", "onKeyDown", "onBlur", "onFocus", "tabIndex", "active", "scroll", "nested", "search", "searchItem", "scrollRef", "scrollContainerRef", "onScroll", "footer", "loading", "limitedScrollHeight", "untouchableScrollbars", "className", "noDataState", "noResultsState", "errorDataState", "dataError", "dataFiltered", "scrollToSelectedItem", "virtualized", "scrollContainerClassName", "barHideStrategy"]);
65
66
  const {
66
67
  size = 's',
67
68
  flattenItems,
@@ -170,7 +171,7 @@ exports.ListPrivate = (0, react_1.forwardRef)((_a, ref) => {
170
171
  [styles_module_scss_1.default.scrollContainerM]: scroll && limitedScrollHeight && size === 'm',
171
172
  [styles_module_scss_1.default.scrollContainerL]: scroll && limitedScrollHeight && size === 'l'
172
173
  }, scrollContainerClassName),
173
- barHideStrategy: 'never',
174
+ barHideStrategy: barHideStrategy,
174
175
  size: size === 's' ? 's' : 'm',
175
176
  ref: ref => {
176
177
  innerScrollRef.current = ref;
@@ -15,6 +15,14 @@ export type ScrollProps = {
15
15
  scrollContainerRef?: RefObject<HTMLElement>;
16
16
  /** Отключает возможность взаимодействовать со скролбарами мышью. */
17
17
  untouchableScrollbars?: boolean;
18
+ /**
19
+ * Управление скрытием скролл баров:
20
+ * <br> - `Never` - показывать всегда
21
+ * <br> - `Leave` - скрывать когда курсор покидает компонент
22
+ * <br> - `Scroll` - показывать только когда происходит скроллинг
23
+ * <br> - `Move` - показывать при движении курсора над компонентом
24
+ */
25
+ barHideStrategy?: OriginalScrollProps['barHideStrategy'];
18
26
  /** Колбек на скролл прокручиваемого списка */
19
27
  onScroll?: OriginalScrollProps['onScroll'];
20
28
  };
@@ -23,7 +23,7 @@ import commonStyles from '../styles.module.css';
23
23
  import { ALL_SIZES } from './constants';
24
24
  import styles from './styles.module.css';
25
25
  export const ListPrivate = forwardRef((_a, ref) => {
26
- var { items, pinTop, pinBottom, onKeyDown, onBlur, onFocus, tabIndex, active, scroll, nested, search, searchItem, scrollRef, scrollContainerRef, onScroll, footer, loading, limitedScrollHeight, untouchableScrollbars, className, noDataState, noResultsState, errorDataState, dataError, dataFiltered, scrollToSelectedItem = false, virtualized = false, scrollContainerClassName } = _a, props = __rest(_a, ["items", "pinTop", "pinBottom", "onKeyDown", "onBlur", "onFocus", "tabIndex", "active", "scroll", "nested", "search", "searchItem", "scrollRef", "scrollContainerRef", "onScroll", "footer", "loading", "limitedScrollHeight", "untouchableScrollbars", "className", "noDataState", "noResultsState", "errorDataState", "dataError", "dataFiltered", "scrollToSelectedItem", "virtualized", "scrollContainerClassName"]);
26
+ var { items, pinTop, pinBottom, onKeyDown, onBlur, onFocus, tabIndex, active, scroll, nested, search, searchItem, scrollRef, scrollContainerRef, onScroll, footer, loading, limitedScrollHeight, untouchableScrollbars, className, noDataState, noResultsState, errorDataState, dataError, dataFiltered, scrollToSelectedItem = false, virtualized = false, scrollContainerClassName, barHideStrategy = 'never' } = _a, props = __rest(_a, ["items", "pinTop", "pinBottom", "onKeyDown", "onBlur", "onFocus", "tabIndex", "active", "scroll", "nested", "search", "searchItem", "scrollRef", "scrollContainerRef", "onScroll", "footer", "loading", "limitedScrollHeight", "untouchableScrollbars", "className", "noDataState", "noResultsState", "errorDataState", "dataError", "dataFiltered", "scrollToSelectedItem", "virtualized", "scrollContainerClassName", "barHideStrategy"]);
27
27
  const { size = 's', flattenItems, focusFlattenItems } = useNewListContext();
28
28
  const { value, isSelectionSingle } = useSelectionContext();
29
29
  const innerScrollRef = useRef(null);
@@ -77,7 +77,7 @@ export const ListPrivate = forwardRef((_a, ref) => {
77
77
  [commonStyles.scrollContainerS]: scroll && limitedScrollHeight && size === 's',
78
78
  [commonStyles.scrollContainerM]: scroll && limitedScrollHeight && size === 'm',
79
79
  [commonStyles.scrollContainerL]: scroll && limitedScrollHeight && size === 'l',
80
- }, scrollContainerClassName), barHideStrategy: 'never', size: size === 's' ? 's' : 'm', ref: ref => {
80
+ }, scrollContainerClassName), barHideStrategy: barHideStrategy, size: size === 's' ? 's' : 'm', ref: ref => {
81
81
  innerScrollRef.current = ref;
82
82
  if (scrollContainerRef)
83
83
  scrollContainerRef.current = ref;
@@ -15,6 +15,14 @@ export type ScrollProps = {
15
15
  scrollContainerRef?: RefObject<HTMLElement>;
16
16
  /** Отключает возможность взаимодействовать со скролбарами мышью. */
17
17
  untouchableScrollbars?: boolean;
18
+ /**
19
+ * Управление скрытием скролл баров:
20
+ * <br> - `Never` - показывать всегда
21
+ * <br> - `Leave` - скрывать когда курсор покидает компонент
22
+ * <br> - `Scroll` - показывать только когда происходит скроллинг
23
+ * <br> - `Move` - показывать при движении курсора над компонентом
24
+ */
25
+ barHideStrategy?: OriginalScrollProps['barHideStrategy'];
18
26
  /** Колбек на скролл прокручиваемого списка */
19
27
  onScroll?: OriginalScrollProps['onScroll'];
20
28
  };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "List",
7
- "version": "0.25.0",
7
+ "version": "0.26.0",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -54,5 +54,5 @@
54
54
  "peerDependencies": {
55
55
  "@snack-uikit/locale": "*"
56
56
  },
57
- "gitHead": "44591f943a79171320e8db3523ec38953ff101d8"
57
+ "gitHead": "ad5274413320bf7880ba3c2d1124610281d0de81"
58
58
  }
@@ -45,6 +45,7 @@ export const ListPrivate = forwardRef(
45
45
  scrollToSelectedItem = false,
46
46
  virtualized = false,
47
47
  scrollContainerClassName,
48
+ barHideStrategy = 'never',
48
49
  ...props
49
50
  }: ListPrivateProps,
50
51
  ref: ForwardedRef<HTMLElement>,
@@ -187,7 +188,7 @@ export const ListPrivate = forwardRef(
187
188
  },
188
189
  scrollContainerClassName,
189
190
  )}
190
- barHideStrategy='never'
191
+ barHideStrategy={barHideStrategy}
191
192
  size={size === 's' ? 's' : 'm'}
192
193
  ref={ref => {
193
194
  innerScrollRef.current = ref;
package/src/types.ts CHANGED
@@ -18,6 +18,14 @@ export type ScrollProps = {
18
18
  scrollContainerRef?: RefObject<HTMLElement>;
19
19
  /** Отключает возможность взаимодействовать со скролбарами мышью. */
20
20
  untouchableScrollbars?: boolean;
21
+ /**
22
+ * Управление скрытием скролл баров:
23
+ * <br> - `Never` - показывать всегда
24
+ * <br> - `Leave` - скрывать когда курсор покидает компонент
25
+ * <br> - `Scroll` - показывать только когда происходит скроллинг
26
+ * <br> - `Move` - показывать при движении курсора над компонентом
27
+ */
28
+ barHideStrategy?: OriginalScrollProps['barHideStrategy'];
21
29
  /** Колбек на скролл прокручиваемого списка */
22
30
  onScroll?: OriginalScrollProps['onScroll'];
23
31
  };