@snack-uikit/list 0.31.0 → 0.31.2
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 +22 -0
- package/README.md +1 -0
- package/dist/cjs/components/Lists/Droplist/DropList.d.ts +1 -1
- package/dist/cjs/components/Lists/Droplist/DropList.js +4 -2
- package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +1 -1
- package/dist/esm/components/Lists/Droplist/DropList.d.ts +1 -1
- package/dist/esm/components/Lists/Droplist/DropList.js +2 -2
- package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +1 -1
- package/package.json +2 -2
- package/src/components/Lists/Droplist/DropList.tsx +2 -0
- package/src/components/Lists/ListPrivate/ListPrivate.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
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.31.2 (2025-07-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **PDS-2584:** fix scroll size ([f4a253e](https://github.com/cloud-ru-tech/snack-uikit/commit/f4a253e7f6d62094167219c4006e05e2b255cb50))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## 0.31.1 (2025-07-07)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **PDS-2556:** prop closeOnPopstate for dropdown ([139dc62](https://github.com/cloud-ru-tech/snack-uikit/commit/139dc62e1e03212a748977f197e1e5dca8736789))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# 0.31.0 (2025-07-07)
|
|
7
29
|
|
|
8
30
|
|
package/README.md
CHANGED
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
| open | `boolean` | - | Управляет состоянием показан/не показан. |
|
|
66
66
|
| onOpenChange | `(isOpen: boolean) => void` | - | Колбек отображения компонента. Срабатывает при изменении состояния open. |
|
|
67
67
|
| widthStrategy | enum PopoverWidthStrategy: `"auto"`, `"gte"`, `"eq"` | auto | Стратегия управления шириной контейнера поповера <br> - `auto` - соответствует ширине контента, <br> - `gte` - Great Than or Equal, равен ширине таргета или больше ее, если контент в поповере шире, <br> - `eq` - Equal, строго равен ширине таргета. |
|
|
68
|
+
| closeOnPopstate | `boolean` | - | Закрывать ли поповер при пекреходе по истории браузера |
|
|
68
69
|
| trigger | enum Trigger: `"click"`, `"hover"`, `"focusVisible"`, `"focus"`, `"hoverAndFocusVisible"`, `"hoverAndFocus"`, `"clickAndFocusVisible"` | - | Условие отображения поповера: <br> - `click` - открывать по клику <br> - `hover` - открывать по ховеру <br> - `focusVisible` - открывать по focus-visible <br> - `focus` - открывать по фокусу <br> - `hoverAndFocusVisible` - открывать по ховеру и focus-visible <br> - `hoverAndFocus` - открывать по ховеру и фокусу <br> - `clickAndFocusVisible` - открывать по клику и focus-visible |
|
|
69
70
|
| placement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Положение поповера относительно своего триггера (children). |
|
|
70
71
|
| className | `string` | - | CSS-класс |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DroplistProps } from '../types';
|
|
2
|
-
export declare function Droplist({ items: itemsProp, search, pinBottom: pinBottomProp, pinTop: pinTopProp, footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse, triggerClassName, selection, contentRender, size, marker, closeDroplistOnItemClick, className, listRef: listRefProp, untouchableScrollbars, virtualized, ...props }: DroplistProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function Droplist({ items: itemsProp, search, pinBottom: pinBottomProp, pinTop: pinTopProp, footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse, triggerClassName, selection, contentRender, size, marker, closeDroplistOnItemClick, className, listRef: listRefProp, untouchableScrollbars, virtualized, closeOnPopstate, ...props }: DroplistProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -54,9 +54,10 @@ function Droplist(_a) {
|
|
|
54
54
|
className,
|
|
55
55
|
listRef: listRefProp,
|
|
56
56
|
untouchableScrollbars = false,
|
|
57
|
-
virtualized = false
|
|
57
|
+
virtualized = false,
|
|
58
|
+
closeOnPopstate
|
|
58
59
|
} = _a,
|
|
59
|
-
props = __rest(_a, ["items", "search", "pinBottom", "pinTop", "footerActiveElementsRefs", "children", "trigger", "placement", "widthStrategy", "triggerElemRef", "open", "onOpenChange", "collapse", "triggerClassName", "selection", "contentRender", "size", "marker", "closeDroplistOnItemClick", "className", "listRef", "untouchableScrollbars", "virtualized"]);
|
|
60
|
+
props = __rest(_a, ["items", "search", "pinBottom", "pinTop", "footerActiveElementsRefs", "children", "trigger", "placement", "widthStrategy", "triggerElemRef", "open", "onOpenChange", "collapse", "triggerClassName", "selection", "contentRender", "size", "marker", "closeDroplistOnItemClick", "className", "listRef", "untouchableScrollbars", "virtualized", "closeOnPopstate"]);
|
|
60
61
|
const hasSearch = (0, react_1.useMemo)(() => Boolean(search), [search]);
|
|
61
62
|
const [openCollapseItems = [], setOpenCollapsedItems] = (0, utils_1.useValueControl)(collapse);
|
|
62
63
|
const toggleOpenCollapseItem = (0, react_1.useCallback)(id => setOpenCollapsedItems(items => (items === null || items === void 0 ? void 0 : items.includes(id)) ? items.filter(item => item !== id) : (items !== null && items !== void 0 ? items : []).concat([id])), [setOpenCollapsedItems]);
|
|
@@ -262,6 +263,7 @@ function Droplist(_a) {
|
|
|
262
263
|
triggerRef: !triggerElemRefProp ? triggerElemRef : isValid && triggerElemRefProp || undefined,
|
|
263
264
|
open: open,
|
|
264
265
|
onOpenChange: handleOpenChange,
|
|
266
|
+
closeOnPopstate: closeOnPopstate,
|
|
265
267
|
children: triggerElem
|
|
266
268
|
})
|
|
267
269
|
})
|
|
@@ -245,7 +245,7 @@ exports.ListPrivate = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
245
245
|
[styles_module_scss_1.default.scrollContainerL]: scroll && limitedScrollHeight && size === 'l'
|
|
246
246
|
}, scrollContainerClassName),
|
|
247
247
|
barHideStrategy: barHideStrategy,
|
|
248
|
-
size:
|
|
248
|
+
size: 's',
|
|
249
249
|
ref: (0, merge_refs_1.default)(innerScrollRef, scrollContainerRef),
|
|
250
250
|
untouchableScrollbars: untouchableScrollbars,
|
|
251
251
|
onScroll: onScroll,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DroplistProps } from '../types';
|
|
2
|
-
export declare function Droplist({ items: itemsProp, search, pinBottom: pinBottomProp, pinTop: pinTopProp, footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse, triggerClassName, selection, contentRender, size, marker, closeDroplistOnItemClick, className, listRef: listRefProp, untouchableScrollbars, virtualized, ...props }: DroplistProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function Droplist({ items: itemsProp, search, pinBottom: pinBottomProp, pinTop: pinTopProp, footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse, triggerClassName, selection, contentRender, size, marker, closeDroplistOnItemClick, className, listRef: listRefProp, untouchableScrollbars, virtualized, closeOnPopstate, ...props }: DroplistProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -23,7 +23,7 @@ import { ListPrivate } from '../ListPrivate';
|
|
|
23
23
|
import styles from '../styles.module.css';
|
|
24
24
|
const DEFAULT_FALLBACK_PLACEMENTS = ['top', 'right', 'bottom', 'left'];
|
|
25
25
|
export function Droplist(_a) {
|
|
26
|
-
var { items: itemsProp, search, pinBottom: pinBottomProp = [], pinTop: pinTopProp = [], footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse = {}, triggerClassName, selection, contentRender, size = 's', marker = true, closeDroplistOnItemClick = false, className, listRef: listRefProp, untouchableScrollbars = false, virtualized = false } = _a, props = __rest(_a, ["items", "search", "pinBottom", "pinTop", "footerActiveElementsRefs", "children", "trigger", "placement", "widthStrategy", "triggerElemRef", "open", "onOpenChange", "collapse", "triggerClassName", "selection", "contentRender", "size", "marker", "closeDroplistOnItemClick", "className", "listRef", "untouchableScrollbars", "virtualized"]);
|
|
26
|
+
var { items: itemsProp, search, pinBottom: pinBottomProp = [], pinTop: pinTopProp = [], footerActiveElementsRefs, children, trigger, placement, widthStrategy, triggerElemRef: triggerElemRefProp, open: openProp, onOpenChange, collapse = {}, triggerClassName, selection, contentRender, size = 's', marker = true, closeDroplistOnItemClick = false, className, listRef: listRefProp, untouchableScrollbars = false, virtualized = false, closeOnPopstate } = _a, props = __rest(_a, ["items", "search", "pinBottom", "pinTop", "footerActiveElementsRefs", "children", "trigger", "placement", "widthStrategy", "triggerElemRef", "open", "onOpenChange", "collapse", "triggerClassName", "selection", "contentRender", "size", "marker", "closeDroplistOnItemClick", "className", "listRef", "untouchableScrollbars", "virtualized", "closeOnPopstate"]);
|
|
27
27
|
const hasSearch = useMemo(() => Boolean(search), [search]);
|
|
28
28
|
const [openCollapseItems = [], setOpenCollapsedItems] = useValueControl(collapse);
|
|
29
29
|
const toggleOpenCollapseItem = useCallback((id) => setOpenCollapsedItems((items) => (items === null || items === void 0 ? void 0 : items.includes(id)) ? items.filter(item => item !== id) : (items !== null && items !== void 0 ? items : []).concat([id])), [setOpenCollapsedItems]);
|
|
@@ -146,5 +146,5 @@ export function Droplist(_a) {
|
|
|
146
146
|
}, children: _jsx(Dropdown, { content: _jsx("div", { className: cn(styles.wrapper, className), children: _jsx(ListPrivate, Object.assign({}, props, { items: memorizedItems.items.focusCloseChildIds, pinTop: memorizedItems.pinTop.focusCloseChildIds, pinBottom: memorizedItems.pinBottom.focusCloseChildIds, virtualized: virtualized, onKeyDown: handleListKeyDown, searchItem: searchItem, tabIndex: 0, ref: mergeRefs(listRef, listRefProp), search: search, onFocus: e => {
|
|
147
147
|
e.stopPropagation();
|
|
148
148
|
forceUpdateActiveItemId === null || forceUpdateActiveItemId === void 0 ? void 0 : forceUpdateActiveItemId(ids[0]);
|
|
149
|
-
}, limitedScrollHeight: true, untouchableScrollbars: untouchableScrollbars })) }), outsideClick: true, triggerClassName: triggerClassName, fallbackPlacements: DEFAULT_FALLBACK_PLACEMENTS, trigger: trigger, placement: placement, widthStrategy: widthStrategy, triggerRef: !triggerElemRefProp ? triggerElemRef : (isValid && triggerElemRefProp) || undefined, open: open, onOpenChange: handleOpenChange, children: triggerElem }) }) }) }) })) }));
|
|
149
|
+
}, limitedScrollHeight: true, untouchableScrollbars: untouchableScrollbars })) }), outsideClick: true, triggerClassName: triggerClassName, fallbackPlacements: DEFAULT_FALLBACK_PLACEMENTS, trigger: trigger, placement: placement, widthStrategy: widthStrategy, triggerRef: !triggerElemRefProp ? triggerElemRef : (isValid && triggerElemRefProp) || undefined, open: open, onOpenChange: handleOpenChange, closeOnPopstate: closeOnPopstate, children: triggerElem }) }) }) }) })) }));
|
|
150
150
|
}
|
|
@@ -139,7 +139,7 @@ export const ListPrivate = forwardRef((_a, ref) => {
|
|
|
139
139
|
[commonStyles.scrollContainerS]: scroll && limitedScrollHeight && size === 's',
|
|
140
140
|
[commonStyles.scrollContainerM]: scroll && limitedScrollHeight && size === 'm',
|
|
141
141
|
[commonStyles.scrollContainerL]: scroll && limitedScrollHeight && size === 'l',
|
|
142
|
-
}, scrollContainerClassName), barHideStrategy: barHideStrategy, size:
|
|
142
|
+
}, scrollContainerClassName), barHideStrategy: barHideStrategy, size: 's', ref: mergeRefs(innerScrollRef, scrollContainerRef), untouchableScrollbars: untouchableScrollbars, onScroll: onScroll, onInitialized: onScrollInitialized, children: [content, _jsx("div", { className: styles.scrollStub, ref: scrollRef })] })) : (_jsx(_Fragment, { children: content })), Number(pinBottom === null || pinBottom === void 0 ? void 0 : pinBottom.length) > 0 && _jsx(PinBottomGroupItem, { children: itemsPinBottomJSX }), footer && (_jsx("div", { className: styles.footer, onFocus: stopPropagation, children: footer }))] })));
|
|
143
143
|
if (!nested) {
|
|
144
144
|
return listJSX;
|
|
145
145
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "List",
|
|
7
|
-
"version": "0.31.
|
|
7
|
+
"version": "0.31.2",
|
|
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": "
|
|
57
|
+
"gitHead": "e25c748c1a490abfd80ba40b9ef26c077080af29"
|
|
58
58
|
}
|
|
@@ -45,6 +45,7 @@ export function Droplist({
|
|
|
45
45
|
listRef: listRefProp,
|
|
46
46
|
untouchableScrollbars = false,
|
|
47
47
|
virtualized = false,
|
|
48
|
+
closeOnPopstate,
|
|
48
49
|
...props
|
|
49
50
|
}: DroplistProps) {
|
|
50
51
|
const hasSearch = useMemo(() => Boolean(search), [search]);
|
|
@@ -267,6 +268,7 @@ export function Droplist({
|
|
|
267
268
|
triggerRef={!triggerElemRefProp ? triggerElemRef : (isValid && triggerElemRefProp) || undefined}
|
|
268
269
|
open={open}
|
|
269
270
|
onOpenChange={handleOpenChange}
|
|
271
|
+
closeOnPopstate={closeOnPopstate}
|
|
270
272
|
>
|
|
271
273
|
{triggerElem}
|
|
272
274
|
</Dropdown>
|
|
@@ -277,7 +277,7 @@ export const ListPrivate = forwardRef(
|
|
|
277
277
|
scrollContainerClassName,
|
|
278
278
|
)}
|
|
279
279
|
barHideStrategy={barHideStrategy}
|
|
280
|
-
size={
|
|
280
|
+
size={ 's' }
|
|
281
281
|
ref={mergeRefs(innerScrollRef, scrollContainerRef)}
|
|
282
282
|
untouchableScrollbars={untouchableScrollbars}
|
|
283
283
|
onScroll={onScroll}
|