@snack-uikit/list 0.18.0 → 0.18.1-preview-ba12ca94.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/dist/cjs/components/Items/AccordionItem/AccordionItem.js +78 -0
- package/dist/cjs/components/Items/AccordionItem/index.js +25 -0
- package/dist/cjs/components/Items/BaseItem/BaseItem.js +199 -0
- package/dist/cjs/components/Items/BaseItem/constants.js +11 -0
- package/dist/cjs/components/Items/BaseItem/index.js +25 -0
- package/dist/cjs/components/Items/GroupItem/GroupItem.js +27 -0
- package/dist/cjs/components/Items/GroupItem/index.js +25 -0
- package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.js +46 -0
- package/dist/cjs/components/Items/GroupSelectItem/index.js +25 -0
- package/dist/cjs/components/Items/NextListItem/NextListItem.js +149 -0
- package/dist/cjs/components/Items/NextListItem/constants.js +7 -0
- package/dist/cjs/components/Items/NextListItem/index.js +25 -0
- package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.js +59 -0
- package/dist/cjs/components/Items/PinGroupItem/index.js +25 -0
- package/dist/cjs/components/Items/SearchItem/SearchItem.js +50 -0
- package/dist/cjs/components/Items/SearchItem/index.js +25 -0
- package/dist/cjs/components/Items/hooks.js +133 -0
- package/dist/cjs/components/Items/index.js +29 -0
- package/dist/cjs/components/Items/types.js +5 -0
- package/dist/cjs/components/Items/utils.js +206 -0
- package/dist/cjs/components/Lists/Droplist/DropList.js +264 -0
- package/dist/cjs/components/Lists/Droplist/index.js +25 -0
- package/dist/cjs/components/Lists/List/List.js +199 -0
- package/dist/cjs/components/Lists/List/index.js +25 -0
- package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +142 -0
- package/dist/cjs/components/Lists/ListPrivate/index.js +25 -0
- package/dist/cjs/components/Lists/contexts/CollapseProvider.js +13 -0
- package/dist/cjs/components/Lists/contexts/FocusListProvider.js +12 -0
- package/dist/cjs/components/Lists/contexts/NewListProvider.js +51 -0
- package/dist/cjs/components/Lists/contexts/OpenListProvider.js +13 -0
- package/dist/cjs/components/Lists/contexts/SelectionProvider.js +133 -0
- package/dist/cjs/components/Lists/contexts/index.js +30 -0
- package/dist/cjs/components/Lists/hooks.js +121 -0
- package/dist/cjs/components/Lists/index.js +52 -0
- package/dist/cjs/components/Lists/types.js +5 -0
- package/dist/cjs/components/index.js +64 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +49 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/index.js +25 -0
- package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.js +40 -0
- package/dist/cjs/helperComponents/HiddenTabButton/index.js +25 -0
- package/dist/cjs/helperComponents/ItemContent/ItemContent.js +74 -0
- package/dist/cjs/helperComponents/ItemContent/index.js +25 -0
- package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.js +56 -0
- package/dist/cjs/helperComponents/ListEmptyState/hooks.js +45 -0
- package/dist/cjs/helperComponents/ListEmptyState/index.js +33 -0
- package/dist/cjs/helperComponents/Separator/Separator.js +97 -0
- package/dist/cjs/helperComponents/Separator/constants.js +11 -0
- package/dist/cjs/helperComponents/Separator/index.js +25 -0
- package/dist/cjs/helperComponents/index.js +29 -0
- package/dist/cjs/index.js +34 -0
- package/dist/cjs/types.js +5 -0
- package/dist/esm/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
- package/dist/esm/components/Items/AccordionItem/index.js +1 -0
- package/dist/esm/components/Items/BaseItem/BaseItem.d.ts +12 -0
- package/dist/esm/components/Items/BaseItem/constants.d.ts +2 -0
- package/dist/esm/components/Items/BaseItem/index.js +1 -0
- package/dist/esm/components/Items/BaseItem/styles.module.css +112 -0
- package/dist/esm/components/Items/GroupItem/GroupItem.d.ts +6 -0
- package/dist/esm/components/Items/GroupItem/index.js +1 -0
- package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
- package/dist/esm/components/Items/GroupSelectItem/index.js +1 -0
- package/dist/esm/components/Items/NextListItem/NextListItem.d.ts +6 -0
- package/dist/esm/components/Items/NextListItem/constants.d.ts +2 -0
- package/dist/esm/components/Items/NextListItem/index.js +1 -0
- package/dist/esm/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
- package/dist/esm/components/Items/PinGroupItem/index.js +1 -0
- package/dist/esm/components/Items/PinGroupItem/styles.module.css +43 -0
- package/dist/esm/components/Items/SearchItem/SearchItem.d.ts +7 -0
- package/dist/esm/components/Items/SearchItem/index.js +1 -0
- package/dist/esm/components/Items/SearchItem/styles.module.css +11 -0
- package/dist/esm/components/Items/hooks.d.ts +23 -0
- package/dist/esm/components/Items/index.js +5 -0
- package/dist/esm/components/Items/styles.module.css +87 -0
- package/dist/esm/components/Items/types.d.ts +118 -0
- package/dist/esm/components/Items/utils.d.ts +35 -0
- package/dist/esm/components/Lists/Droplist/DropList.d.ts +2 -0
- package/dist/esm/components/Lists/Droplist/index.js +1 -0
- package/dist/esm/components/Lists/List/List.d.ts +16 -0
- package/dist/esm/components/Lists/List/index.js +1 -0
- package/dist/esm/components/Lists/ListPrivate/ListPrivate.d.ts +13 -0
- package/dist/esm/components/Lists/ListPrivate/index.js +1 -0
- package/dist/esm/components/Lists/ListPrivate/styles.module.css +51 -0
- package/dist/esm/components/Lists/contexts/CollapseProvider.d.ts +17 -0
- package/dist/esm/components/Lists/contexts/FocusListProvider.d.ts +9 -0
- package/dist/esm/components/Lists/contexts/NewListProvider.d.ts +33 -0
- package/dist/esm/components/Lists/contexts/OpenListProvider.d.ts +6 -0
- package/dist/esm/components/Lists/contexts/SelectionProvider.d.ts +70 -0
- package/dist/esm/components/Lists/contexts/index.js +6 -0
- package/dist/esm/components/Lists/hooks.d.ts +14 -0
- package/dist/esm/components/Lists/index.d.ts +5 -0
- package/dist/esm/components/Lists/styles.module.css +59 -0
- package/dist/esm/components/Lists/types.d.ts +78 -0
- package/dist/esm/components/index.d.ts +4 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/index.js +1 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/styles.module.css +38 -0
- package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
- package/dist/esm/helperComponents/HiddenTabButton/index.js +1 -0
- package/dist/esm/helperComponents/HiddenTabButton/styles.module.css +9 -0
- package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +17 -0
- package/dist/esm/helperComponents/ItemContent/index.js +1 -0
- package/dist/esm/helperComponents/ItemContent/styles.module.css +122 -0
- package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.d.ts +14 -0
- package/dist/esm/helperComponents/ListEmptyState/hooks.d.ts +10 -0
- package/dist/esm/helperComponents/ListEmptyState/index.js +2 -0
- package/dist/esm/helperComponents/ListEmptyState/styles.module.css +8 -0
- package/dist/esm/helperComponents/Separator/Separator.d.ts +17 -0
- package/dist/esm/helperComponents/Separator/constants.d.ts +2 -0
- package/dist/esm/helperComponents/Separator/index.js +1 -0
- package/dist/esm/helperComponents/Separator/styles.module.css +141 -0
- package/dist/esm/helperComponents/index.js +5 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/types.d.ts +20 -0
- package/package.json +20 -16
- /package/dist/{components → cjs/components}/Items/AccordionItem/AccordionItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/AccordionItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/BaseItem/BaseItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/BaseItem/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/BaseItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/BaseItem/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Items/GroupItem/GroupItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/GroupItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/GroupSelectItem/GroupSelectItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/GroupSelectItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/NextListItem/NextListItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/NextListItem/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/NextListItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/PinGroupItem/PinGroupItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/PinGroupItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/PinGroupItem/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Items/SearchItem/SearchItem.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/SearchItem/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/SearchItem/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Items/hooks.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Items/types.d.ts +0 -0
- /package/dist/{components → cjs/components}/Items/utils.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/Droplist/DropList.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/Droplist/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/List/List.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/List/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/ListPrivate/ListPrivate.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/ListPrivate/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/ListPrivate/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/CollapseProvider.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/FocusListProvider.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/NewListProvider.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/OpenListProvider.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/SelectionProvider.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/contexts/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/hooks.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Lists/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Lists/types.d.ts +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/CollapseBlockPrivate/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/HiddenTabButton.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/HiddenTabButton/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/ItemContent.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ItemContent/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/ListEmptyState.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/hooks.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ListEmptyState/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/Separator/Separator.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/Separator/constants.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/Separator/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/Separator/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/AccordionItem/AccordionItem.js +0 -0
- /package/dist/{components/Items/AccordionItem/index.js → esm/components/Items/AccordionItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/BaseItem/BaseItem.js +0 -0
- /package/dist/{components → esm/components}/Items/BaseItem/constants.js +0 -0
- /package/dist/{components/Items/BaseItem/index.js → esm/components/Items/BaseItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/GroupItem/GroupItem.js +0 -0
- /package/dist/{components/Items/GroupItem/index.js → esm/components/Items/GroupItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/GroupSelectItem/GroupSelectItem.js +0 -0
- /package/dist/{components/Items/GroupSelectItem/index.js → esm/components/Items/GroupSelectItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/NextListItem/NextListItem.js +0 -0
- /package/dist/{components → esm/components}/Items/NextListItem/constants.js +0 -0
- /package/dist/{components/Items/NextListItem/index.js → esm/components/Items/NextListItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/PinGroupItem/PinGroupItem.js +0 -0
- /package/dist/{components/Items/PinGroupItem/index.js → esm/components/Items/PinGroupItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/SearchItem/SearchItem.js +0 -0
- /package/dist/{components/Items/SearchItem/index.js → esm/components/Items/SearchItem/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/hooks.js +0 -0
- /package/dist/{components/Items/index.js → esm/components/Items/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Items/types.js +0 -0
- /package/dist/{components → esm/components}/Items/utils.js +0 -0
- /package/dist/{components → esm/components}/Lists/Droplist/DropList.js +0 -0
- /package/dist/{components/Lists/Droplist/index.js → esm/components/Lists/Droplist/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Lists/List/List.js +0 -0
- /package/dist/{components/Lists/List/index.js → esm/components/Lists/List/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Lists/ListPrivate/ListPrivate.js +0 -0
- /package/dist/{components/Lists/ListPrivate/index.js → esm/components/Lists/ListPrivate/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Lists/contexts/CollapseProvider.js +0 -0
- /package/dist/{components → esm/components}/Lists/contexts/FocusListProvider.js +0 -0
- /package/dist/{components → esm/components}/Lists/contexts/NewListProvider.js +0 -0
- /package/dist/{components → esm/components}/Lists/contexts/OpenListProvider.js +0 -0
- /package/dist/{components → esm/components}/Lists/contexts/SelectionProvider.js +0 -0
- /package/dist/{components/Lists/contexts/index.js → esm/components/Lists/contexts/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Lists/hooks.js +0 -0
- /package/dist/{components → esm/components}/Lists/index.js +0 -0
- /package/dist/{components → esm/components}/Lists/types.js +0 -0
- /package/dist/{components → esm/components}/index.js +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/CollapseBlockPrivate/CollapseBlockPrivate.js +0 -0
- /package/dist/{helperComponents/CollapseBlockPrivate/index.js → esm/helperComponents/CollapseBlockPrivate/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/HiddenTabButton/HiddenTabButton.js +0 -0
- /package/dist/{helperComponents/HiddenTabButton/index.js → esm/helperComponents/HiddenTabButton/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/ItemContent/ItemContent.js +0 -0
- /package/dist/{helperComponents/ItemContent/index.js → esm/helperComponents/ItemContent/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/ListEmptyState/ListEmptyState.js +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/ListEmptyState/hooks.js +0 -0
- /package/dist/{helperComponents/ListEmptyState/index.js → esm/helperComponents/ListEmptyState/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/Separator/Separator.js +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/Separator/constants.js +0 -0
- /package/dist/{helperComponents/Separator/index.js → esm/helperComponents/Separator/index.d.ts} +0 -0
- /package/dist/{helperComponents/index.js → esm/helperComponents/index.d.ts} +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
.pinTopItem{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
border:none;
|
|
5
|
+
}
|
|
6
|
+
.pinTopItem[data-size=s]{
|
|
7
|
+
padding-bottom:var(--radius-drop-list-container, 8px);
|
|
8
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
9
|
+
}
|
|
10
|
+
.pinTopItem[data-size=m]{
|
|
11
|
+
padding-bottom:var(--radius-drop-list-container, 8px);
|
|
12
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
13
|
+
}
|
|
14
|
+
.pinTopItem[data-size=l]{
|
|
15
|
+
padding-bottom:var(--radius-drop-list-container, 8px);
|
|
16
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
17
|
+
}
|
|
18
|
+
.pinTopItem li,
|
|
19
|
+
.pinTopItem ul{
|
|
20
|
+
list-style-type:none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.pinBottomItem{
|
|
24
|
+
display:flex;
|
|
25
|
+
flex-direction:column;
|
|
26
|
+
border:none;
|
|
27
|
+
}
|
|
28
|
+
.pinBottomItem[data-size=s]{
|
|
29
|
+
padding-top:var(--radius-drop-list-container, 8px);
|
|
30
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
31
|
+
}
|
|
32
|
+
.pinBottomItem[data-size=m]{
|
|
33
|
+
padding-top:var(--radius-drop-list-container, 8px);
|
|
34
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
35
|
+
}
|
|
36
|
+
.pinBottomItem[data-size=l]{
|
|
37
|
+
padding-top:var(--radius-drop-list-container, 8px);
|
|
38
|
+
gap:var(--radius-drop-list-container, 8px);
|
|
39
|
+
}
|
|
40
|
+
.pinBottomItem li,
|
|
41
|
+
.pinBottomItem ul{
|
|
42
|
+
list-style-type:none;
|
|
43
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { SearchState } from '../../../types';
|
|
3
|
+
export type SearchItemProps = {
|
|
4
|
+
search?: SearchState;
|
|
5
|
+
itemRef?: RefObject<HTMLElement>;
|
|
6
|
+
};
|
|
7
|
+
export declare function SearchItem({ search, itemRef }: SearchItemProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SearchItem';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
.searchItem{
|
|
2
|
+
width:100%;
|
|
3
|
+
}
|
|
4
|
+
.searchItem:focus-within, .searchItem:focus-visible{
|
|
5
|
+
outline-width:var(--border-state-focus-s-border-width, 2px);
|
|
6
|
+
outline-style:var(--border-state-focus-s-border-style, solid);
|
|
7
|
+
outline-color:var(--border-state-focus-s-border-color, );
|
|
8
|
+
outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
|
|
9
|
+
max-width:100%;
|
|
10
|
+
outline-color:var(--sys-primary-decor-activated, #c5b2f1);
|
|
11
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { Flatten, FlattenBaseItem, ItemId } from './types';
|
|
3
|
+
export declare function useRenderItems(focusCloseChildIds?: ItemId[]): import("react/jsx-runtime").JSX.Element[] | null[];
|
|
4
|
+
type UseCreateBaseItemsProps = {
|
|
5
|
+
search?: boolean;
|
|
6
|
+
footerActiveElementsRefs?: RefObject<HTMLElement>[];
|
|
7
|
+
};
|
|
8
|
+
export declare function useCreateBaseItems({ footerActiveElementsRefs }: UseCreateBaseItemsProps): {
|
|
9
|
+
searchItem: Flatten<FlattenBaseItem, 'itemRef'>;
|
|
10
|
+
footerItems: Flatten<FlattenBaseItem, 'itemRef'>[];
|
|
11
|
+
};
|
|
12
|
+
type UseGroupItemSelectionProps = {
|
|
13
|
+
allChildIds: ItemId[];
|
|
14
|
+
items: ItemId[];
|
|
15
|
+
id: ItemId;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare function useGroupItemSelection({ id, allChildIds }: UseGroupItemSelectionProps): {
|
|
19
|
+
checked: boolean | undefined;
|
|
20
|
+
indeterminate: boolean;
|
|
21
|
+
handleOnSelect: () => void;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.itemWrapper{
|
|
2
|
+
position:relative;
|
|
3
|
+
min-width:100%;
|
|
4
|
+
margin:0;
|
|
5
|
+
padding:0;
|
|
6
|
+
}
|
|
7
|
+
.itemWrapper::before, .itemWrapper::after{
|
|
8
|
+
pointer-events:none;
|
|
9
|
+
content:"";
|
|
10
|
+
position:absolute;
|
|
11
|
+
top:0;
|
|
12
|
+
left:0;
|
|
13
|
+
width:100%;
|
|
14
|
+
height:100%;
|
|
15
|
+
background-color:transparent;
|
|
16
|
+
}
|
|
17
|
+
.itemWrapper[data-disabled], .itemWrapper:disabled{
|
|
18
|
+
cursor:not-allowed;
|
|
19
|
+
background-color:transparent;
|
|
20
|
+
outline:none;
|
|
21
|
+
}
|
|
22
|
+
.itemWrapper[data-disabled]::before, .itemWrapper:disabled::before{
|
|
23
|
+
display:none;
|
|
24
|
+
}
|
|
25
|
+
.itemWrapper[data-disabled]::after, .itemWrapper:disabled::after{
|
|
26
|
+
cursor:not-allowed;
|
|
27
|
+
background-color:transparent;
|
|
28
|
+
}
|
|
29
|
+
.itemWrapper:not([data-inactive], [data-disabled])[data-open]::before, .itemWrapper:not([data-inactive], [data-disabled])[data-focused]::before, .itemWrapper:not([data-inactive], [data-disabled]):focus-visible::before{
|
|
30
|
+
opacity:var(--opacity-a008, 0.08);
|
|
31
|
+
background-color:var(--sys-neutral-accent-default, #787b8a);
|
|
32
|
+
}
|
|
33
|
+
@media (hover: hover){
|
|
34
|
+
.itemWrapper:not([data-inactive], [data-disabled]):hover::before{
|
|
35
|
+
opacity:var(--opacity-a008, 0.08);
|
|
36
|
+
background-color:var(--sys-neutral-accent-default, #787b8a);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.listItem{
|
|
41
|
+
cursor:pointer;
|
|
42
|
+
position:relative;
|
|
43
|
+
display:flex;
|
|
44
|
+
flex-direction:row;
|
|
45
|
+
align-items:flex-start;
|
|
46
|
+
box-sizing:border-box;
|
|
47
|
+
width:-moz-max-content;
|
|
48
|
+
width:max-content;
|
|
49
|
+
min-width:100%;
|
|
50
|
+
margin:0;
|
|
51
|
+
padding:0;
|
|
52
|
+
color:var(--sys-neutral-text-main, #41424e);
|
|
53
|
+
text-align:start;
|
|
54
|
+
-webkit-appearance:unset;
|
|
55
|
+
-moz-appearance:unset;
|
|
56
|
+
appearance:unset;
|
|
57
|
+
background-color:transparent;
|
|
58
|
+
border:none;
|
|
59
|
+
outline:none;
|
|
60
|
+
}
|
|
61
|
+
.listItem[data-size=s]{
|
|
62
|
+
padding-top:var(--space-drop-list-item-s-container-vertical-padding, 4px);
|
|
63
|
+
padding-bottom:var(--space-drop-list-item-s-container-vertical-padding, 4px);
|
|
64
|
+
padding-left:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
|
|
65
|
+
padding-right:var(--space-drop-list-item-s-container-horizontal-padding, 8px);
|
|
66
|
+
gap:var(--space-drop-list-item-s-container-gap, 8px);
|
|
67
|
+
}
|
|
68
|
+
.listItem[data-size=m]{
|
|
69
|
+
padding-top:var(--space-drop-list-item-m-container-vertical-padding, 8px);
|
|
70
|
+
padding-bottom:var(--space-drop-list-item-m-container-vertical-padding, 8px);
|
|
71
|
+
padding-left:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
|
|
72
|
+
padding-right:var(--space-drop-list-item-m-container-horizontal-padding, 10px);
|
|
73
|
+
gap:var(--space-drop-list-item-m-container-gap, 8px);
|
|
74
|
+
}
|
|
75
|
+
.listItem[data-size=l]{
|
|
76
|
+
padding-top:var(--space-drop-list-item-l-container-vertical-padding, 12px);
|
|
77
|
+
padding-bottom:var(--space-drop-list-item-l-container-vertical-padding, 12px);
|
|
78
|
+
padding-left:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
|
|
79
|
+
padding-right:var(--space-drop-list-item-l-container-horizontal-padding, 12px);
|
|
80
|
+
gap:var(--space-drop-list-item-l-container-gap, 8px);
|
|
81
|
+
}
|
|
82
|
+
.listItem:not([data-inactive], [data-disabled])[data-focused], .listItem:not([data-inactive], [data-disabled]):focus-visible{
|
|
83
|
+
outline-width:var(--border-state-focus-s-border-width, 2px);
|
|
84
|
+
outline-style:var(--border-state-focus-s-border-style, solid);
|
|
85
|
+
outline-color:var(--border-state-focus-s-border-color, );
|
|
86
|
+
outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
|
|
87
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { FocusEvent, KeyboardEvent, MouseEvent, ReactNode, RefObject } from 'react';
|
|
2
|
+
import { TruncateStringProps } from '@snack-uikit/truncate-string';
|
|
3
|
+
import { WithSupportProps } from '@snack-uikit/utils';
|
|
4
|
+
import { ItemContentProps } from '../../helperComponents';
|
|
5
|
+
import { ScrollProps } from '../../types';
|
|
6
|
+
export type AnyType = any;
|
|
7
|
+
export type ItemId = string | number;
|
|
8
|
+
type ItemContent = ItemContentProps;
|
|
9
|
+
export type BaseItem = WithSupportProps<{
|
|
10
|
+
/**
|
|
11
|
+
* Слот до основного контента
|
|
12
|
+
* @type ReactElement
|
|
13
|
+
*/
|
|
14
|
+
beforeContent?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Слот после основного контента
|
|
17
|
+
* @type ReactElement
|
|
18
|
+
*/
|
|
19
|
+
afterContent?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Основной контент айтема
|
|
22
|
+
*/
|
|
23
|
+
content?: ItemContent | ReactNode;
|
|
24
|
+
/** Колбек обработки клика */
|
|
25
|
+
onClick?(e: MouseEvent<HTMLElement>): void;
|
|
26
|
+
/** Колбек обработки нажатия кнопки мыши */
|
|
27
|
+
onMouseDown?(e: MouseEvent<HTMLElement>): void;
|
|
28
|
+
/** Колбек обработки нажатия клавиши */
|
|
29
|
+
onKeyDown?(e: KeyboardEvent<HTMLElement>): void;
|
|
30
|
+
/** Колбек обработки фокуса */
|
|
31
|
+
onFocus?(e: FocusEvent<HTMLElement>): void;
|
|
32
|
+
/** Колбек обработки блюра */
|
|
33
|
+
onBlur?(e: FocusEvent<HTMLElement>): void;
|
|
34
|
+
/** Уникальный идентификатор */
|
|
35
|
+
id?: ItemId;
|
|
36
|
+
/** Флаг неактивности элемента */
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
/** Флаг присутствия элемента */
|
|
39
|
+
hidden?: boolean;
|
|
40
|
+
itemRef?: RefObject<HTMLElement>;
|
|
41
|
+
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Флаг отображения отключения реакции на любое css состояние (hover/focus и тд)
|
|
44
|
+
* <br>
|
|
45
|
+
* Так же элемент пропадает из навигации с клавиатуры, и не может быть выбран (selection)
|
|
46
|
+
*/
|
|
47
|
+
inactive?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Флаг отображения состояния выбранного элемента через switch
|
|
50
|
+
*/
|
|
51
|
+
switch?: boolean;
|
|
52
|
+
itemWrapRender?(item: ReactNode): ReactNode;
|
|
53
|
+
checked?: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
type BaseItemWithoutNonGroup = Omit<BaseItem, 'switch' | 'inactive'>;
|
|
56
|
+
export type Item = BaseItem | AccordionItem | NextListItem | GroupItem | GroupSelectItem;
|
|
57
|
+
export type AccordionItem = BaseItemWithoutNonGroup & {
|
|
58
|
+
items: Item[];
|
|
59
|
+
type: 'collapse';
|
|
60
|
+
};
|
|
61
|
+
export type NextListItem = BaseItemWithoutNonGroup & ScrollProps & {
|
|
62
|
+
items: Item[];
|
|
63
|
+
type: 'next-list';
|
|
64
|
+
onSublistOpenChanged?(open: boolean, id?: ItemId): void;
|
|
65
|
+
loading?: boolean;
|
|
66
|
+
dataError?: boolean;
|
|
67
|
+
dataFiltered?: boolean;
|
|
68
|
+
placement?: 'right-start' | 'left-start' | 'left' | 'right' | 'left-end' | 'right-end';
|
|
69
|
+
};
|
|
70
|
+
type CommonGroupItem = {
|
|
71
|
+
label?: string;
|
|
72
|
+
truncate?: {
|
|
73
|
+
variant?: TruncateStringProps['variant'];
|
|
74
|
+
};
|
|
75
|
+
mode?: 'primary' | 'secondary';
|
|
76
|
+
hidden?: boolean;
|
|
77
|
+
divider?: boolean;
|
|
78
|
+
};
|
|
79
|
+
export type GroupItem = CommonGroupItem & {
|
|
80
|
+
items: Item[];
|
|
81
|
+
type: 'group';
|
|
82
|
+
};
|
|
83
|
+
export type GroupSelectItem = CommonGroupItem & {
|
|
84
|
+
items: Item[];
|
|
85
|
+
type: 'group-select';
|
|
86
|
+
id?: ItemId;
|
|
87
|
+
itemRef?: RefObject<HTMLElement>;
|
|
88
|
+
};
|
|
89
|
+
type RequiredFields<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
|
|
90
|
+
export type Flatten<T, K extends keyof T> = RequiredFields<T, K>;
|
|
91
|
+
export type CommonFlattenProps = {
|
|
92
|
+
items: ItemId[];
|
|
93
|
+
allChildIds: ItemId[];
|
|
94
|
+
};
|
|
95
|
+
export type FlattenBaseItem = Flatten<BaseItem, 'id'>;
|
|
96
|
+
export type FlattenNextListItem = Flatten<Omit<NextListItem, 'items'>, 'id'>;
|
|
97
|
+
export type FlattenGroupListItem = Omit<GroupItem, 'items'> & {
|
|
98
|
+
id: ItemId;
|
|
99
|
+
};
|
|
100
|
+
export type FlattenGroupSelectListItem = Flatten<Omit<GroupSelectItem, 'items'>, 'id'>;
|
|
101
|
+
export type FlattenAccordionItem = Flatten<Omit<AccordionItem, 'items'>, 'id'>;
|
|
102
|
+
export type FlattenItem = FlattenBaseItem | ((FlattenNextListItem | FlattenGroupListItem | FlattenAccordionItem | FlattenGroupSelectListItem) & CommonFlattenProps);
|
|
103
|
+
export type FocusFlattenItem = {
|
|
104
|
+
key: ItemId;
|
|
105
|
+
id: ItemId;
|
|
106
|
+
originalId: ItemId;
|
|
107
|
+
parentId?: ItemId;
|
|
108
|
+
itemRef?: RefObject<HTMLElement>;
|
|
109
|
+
type?: 'next-list' | 'collapse' | 'group' | 'group-select';
|
|
110
|
+
disabled?: boolean;
|
|
111
|
+
} & CommonFlattenProps;
|
|
112
|
+
export type ItemProps = Item;
|
|
113
|
+
export type BaseItemProps = BaseItem;
|
|
114
|
+
export type GroupItemProps = GroupItem;
|
|
115
|
+
export type NextListItemProps = NextListItem;
|
|
116
|
+
export type AccordionItemProps = AccordionItem;
|
|
117
|
+
export type GroupSelectItemProps = GroupSelectItem;
|
|
118
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ItemContentProps } from '../../helperComponents';
|
|
2
|
+
import { AccordionItem, AnyType, BaseItem, FlattenItem, FocusFlattenItem, GroupItem, GroupSelectItem, Item, ItemId, NextListItem } from './types';
|
|
3
|
+
export declare function isBaseItem<ReturnType = BaseItem>(item: AnyType): item is ReturnType;
|
|
4
|
+
export declare function isAccordionItem<ReturnType = AccordionItem>(item: AnyType): item is ReturnType;
|
|
5
|
+
export declare function isNextListItem<ReturnType = NextListItem>(item: AnyType): item is ReturnType;
|
|
6
|
+
export declare function isGroupItem<ReturnType = GroupItem>(item: AnyType): item is ReturnType;
|
|
7
|
+
export declare function isGroupSelectItem<ReturnType = GroupSelectItem>(item: AnyType): item is ReturnType;
|
|
8
|
+
export declare function isContentItem(item: AnyType): item is ItemContentProps;
|
|
9
|
+
export declare const isBaseItemProps: typeof isBaseItem;
|
|
10
|
+
export declare const isAccordionItemProps: typeof isAccordionItem;
|
|
11
|
+
export declare const isNextListItemProps: typeof isNextListItem;
|
|
12
|
+
export declare const isGroupItemProps: typeof isGroupItem;
|
|
13
|
+
type KindFlattenItemsProps = {
|
|
14
|
+
items: Item[];
|
|
15
|
+
prefix?: ItemId;
|
|
16
|
+
parentId?: ItemId;
|
|
17
|
+
};
|
|
18
|
+
export declare function kindFlattenItems({ items, prefix, parentId }: KindFlattenItemsProps): {
|
|
19
|
+
focusCloseChildIds: ItemId[];
|
|
20
|
+
allChildIds: ItemId[];
|
|
21
|
+
flattenItems: Record<string, FlattenItem>;
|
|
22
|
+
focusFlattenItems: Record<string, FocusFlattenItem>;
|
|
23
|
+
};
|
|
24
|
+
type ExtractActiveItemsProps = {
|
|
25
|
+
focusFlattenItems: Record<string, FocusFlattenItem>;
|
|
26
|
+
focusCloseChildIds: ItemId[];
|
|
27
|
+
openCollapseItems: ItemId[];
|
|
28
|
+
isSelectionMultiple?: boolean;
|
|
29
|
+
};
|
|
30
|
+
type ExtractActiveItemsReturnType = {
|
|
31
|
+
ids: ItemId[];
|
|
32
|
+
expandedIds: ItemId[];
|
|
33
|
+
};
|
|
34
|
+
export declare function extractActiveItems({ focusFlattenItems, focusCloseChildIds, openCollapseItems, isSelectionMultiple, }: ExtractActiveItemsProps): ExtractActiveItemsReturnType;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
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, ...props }: DroplistProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DropList';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { KeyboardEvent } from 'react';
|
|
2
|
+
export declare const List: import("react").ForwardRefExoticComponent<{
|
|
3
|
+
'data-test-id'?: string;
|
|
4
|
+
} & import("react").AriaAttributes & {
|
|
5
|
+
items: import("../../Items").Item[];
|
|
6
|
+
pinTop?: import("../../Items").Item[];
|
|
7
|
+
pinBottom?: import("../../Items").Item[];
|
|
8
|
+
footer?: import("react").ReactNode;
|
|
9
|
+
footerActiveElementsRefs?: import("react").RefObject<HTMLElement>[];
|
|
10
|
+
search?: import("../../..").SearchState;
|
|
11
|
+
tabIndex?: number;
|
|
12
|
+
collapse?: import("../contexts").CollapseState;
|
|
13
|
+
className?: string;
|
|
14
|
+
onKeyDown?(e: KeyboardEvent<HTMLElement>): void;
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
} & import("../contexts").SelectionState & import("../contexts").PublicListContextType & import("../../../types").ScrollProps & import("../types").EmptyState & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './List';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const ListPrivate: import("react").ForwardRefExoticComponent<Omit<import("../types").ListProps, "items" | "pinTop" | "pinBottom"> & {
|
|
2
|
+
nested?: boolean;
|
|
3
|
+
active?: boolean;
|
|
4
|
+
tabIndex?: number;
|
|
5
|
+
onFocus?(e: import("react").FocusEvent<HTMLElement>): void;
|
|
6
|
+
onBlur?(e: import("react").FocusEvent<HTMLElement>): void;
|
|
7
|
+
onKeyDown?(e: import("react").KeyboardEvent<HTMLElement>): void;
|
|
8
|
+
limitedScrollHeight?: boolean;
|
|
9
|
+
searchItem?: import("../../Items").FlattenBaseItem;
|
|
10
|
+
pinTop?: import("../../Items").ItemId[];
|
|
11
|
+
items: import("../../Items").ItemId[];
|
|
12
|
+
pinBottom?: import("../../Items").ItemId[];
|
|
13
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ListPrivate';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.loader{
|
|
2
|
+
display:flex;
|
|
3
|
+
align-items:center;
|
|
4
|
+
justify-content:center;
|
|
5
|
+
}
|
|
6
|
+
.loader[data-size=s]{
|
|
7
|
+
height:var(--dimension-3m, 24px);
|
|
8
|
+
}
|
|
9
|
+
.loader[data-size=s][data-no-items]{
|
|
10
|
+
min-width:calc(2 * 3 * var(--dimension-3m, 24px));
|
|
11
|
+
height:calc(3 * var(--dimension-3m, 24px));
|
|
12
|
+
}
|
|
13
|
+
.loader[data-size=m]{
|
|
14
|
+
height:var(--dimension-4m, 32px);
|
|
15
|
+
}
|
|
16
|
+
.loader[data-size=m][data-no-items]{
|
|
17
|
+
min-width:calc(2 * 3 * var(--dimension-4m, 32px));
|
|
18
|
+
height:calc(3 * var(--dimension-4m, 32px));
|
|
19
|
+
}
|
|
20
|
+
.loader[data-size=l]{
|
|
21
|
+
height:var(--dimension-5m, 40px);
|
|
22
|
+
}
|
|
23
|
+
.loader[data-size=l][data-no-items]{
|
|
24
|
+
min-width:calc(2 * 3 * var(--dimension-5m, 40px));
|
|
25
|
+
height:calc(3 * var(--dimension-5m, 40px));
|
|
26
|
+
}
|
|
27
|
+
.loader:focus-visible{
|
|
28
|
+
outline-width:var(--border-state-focus-s-border-width, 2px);
|
|
29
|
+
outline-style:var(--border-state-focus-s-border-style, solid);
|
|
30
|
+
outline-color:var(--border-state-focus-s-border-color, );
|
|
31
|
+
outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
|
|
32
|
+
outline-color:var(--sys-available-complementary, #1c1c24);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.scrollStub{
|
|
36
|
+
height:calc(var(--dimension-025m, 2px) / 2);
|
|
37
|
+
margin-top:calc(var(--dimension-025m, 2px) / -2);
|
|
38
|
+
background:transparent;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.footer{
|
|
42
|
+
display:flex;
|
|
43
|
+
flex-direction:column;
|
|
44
|
+
box-sizing:border-box;
|
|
45
|
+
padding:var(--dimension-050m, 4px);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.content{
|
|
49
|
+
overflow:hidden;
|
|
50
|
+
flex-grow:1;
|
|
51
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ItemId } from '../../Items';
|
|
2
|
+
export type CollapseLevelContextType = {
|
|
3
|
+
level?: number;
|
|
4
|
+
};
|
|
5
|
+
export declare const CollapseLevelContext: import("react").Context<CollapseLevelContextType>;
|
|
6
|
+
export declare const useCollapseLevelContext: () => CollapseLevelContextType;
|
|
7
|
+
export type CollapseContextType = {
|
|
8
|
+
openCollapseItems?: ItemId[];
|
|
9
|
+
toggleOpenCollapseItem?(id: ItemId): void;
|
|
10
|
+
};
|
|
11
|
+
export declare const CollapseContext: import("react").Context<CollapseContextType>;
|
|
12
|
+
export declare const useCollapseContext: () => CollapseContextType;
|
|
13
|
+
export type CollapseState = {
|
|
14
|
+
value?: ItemId[];
|
|
15
|
+
onChange?(value?: ItemId[]): void;
|
|
16
|
+
defaultValue?: ItemId[];
|
|
17
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KeyboardEvent } from 'react';
|
|
2
|
+
import { ItemId } from '../../Items';
|
|
3
|
+
export type FocusListContextType = {
|
|
4
|
+
activeItemId?: ItemId;
|
|
5
|
+
forceUpdateActiveItemId?(itemId: ItemId): void;
|
|
6
|
+
handleListKeyDownFactory: (ids: ItemId[], expandedIds: ItemId[]) => (e: KeyboardEvent<HTMLElement>) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const FocusListContext: import("react").Context<FocusListContextType>;
|
|
9
|
+
export declare const useFocusListContext: () => FocusListContextType;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ItemContentProps } from '../../../helperComponents';
|
|
3
|
+
import { FlattenItem, FocusFlattenItem, ItemId } from '../../Items';
|
|
4
|
+
type ContentRenderProps = {
|
|
5
|
+
id?: ItemId;
|
|
6
|
+
content?: ItemContentProps | ReactNode;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type PublicListContextType = {
|
|
10
|
+
/** Размер списка */
|
|
11
|
+
size?: 's' | 'm' | 'l';
|
|
12
|
+
/** Отображать ли маркер у выбранного жлемента списка */
|
|
13
|
+
marker?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Рендер функция основного контента айтема
|
|
16
|
+
*/
|
|
17
|
+
contentRender?(props: ContentRenderProps): ReactNode;
|
|
18
|
+
};
|
|
19
|
+
export type PrivateListContextType = {
|
|
20
|
+
flattenItems: Record<string, FlattenItem>;
|
|
21
|
+
focusFlattenItems: Record<string, FocusFlattenItem>;
|
|
22
|
+
};
|
|
23
|
+
type Child = {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
};
|
|
26
|
+
type ListContextType = PublicListContextType & PrivateListContextType;
|
|
27
|
+
export declare const ListContext: import("react").Context<{
|
|
28
|
+
flattenItems: {};
|
|
29
|
+
focusFlattenItems: {};
|
|
30
|
+
}>;
|
|
31
|
+
export declare function useNewListContext(): ListContextType;
|
|
32
|
+
export declare function NewListContextProvider({ children, ...props }: ListContextType & Child): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AnyType, ItemId } from '../../Items';
|
|
3
|
+
export type OnChangeHandler<T = AnyType> = (value: T) => void;
|
|
4
|
+
export type SelectionSingleValueType = ItemId;
|
|
5
|
+
export type SelectionSingleState = {
|
|
6
|
+
/** Начальное состояние */
|
|
7
|
+
defaultValue?: ItemId;
|
|
8
|
+
/** Controlled состояние */
|
|
9
|
+
value?: ItemId;
|
|
10
|
+
/** Controlled обработчик измения состояния */
|
|
11
|
+
onChange?: OnChangeHandler;
|
|
12
|
+
/** Режим выбора */
|
|
13
|
+
mode: 'single';
|
|
14
|
+
};
|
|
15
|
+
export type SelectionSingleProps = {
|
|
16
|
+
setValue?(value: AnyType): void;
|
|
17
|
+
/** Режим выбора single */
|
|
18
|
+
isSelectionSingle: true;
|
|
19
|
+
/** Режим выбора multi */
|
|
20
|
+
isSelectionMultiple: false;
|
|
21
|
+
} & SelectionSingleState;
|
|
22
|
+
export type SelectionMultipleState = {
|
|
23
|
+
/** Начальное состояние */
|
|
24
|
+
defaultValue?: ItemId[];
|
|
25
|
+
/** Controlled состояние */
|
|
26
|
+
value?: ItemId[];
|
|
27
|
+
/** Controlled обработчик измения состояния */
|
|
28
|
+
onChange?: OnChangeHandler;
|
|
29
|
+
/** Режим выбора */
|
|
30
|
+
mode: 'multiple';
|
|
31
|
+
};
|
|
32
|
+
export type SelectionMultipleProps = {
|
|
33
|
+
setValue?(value: AnyType): void;
|
|
34
|
+
/** Режим выбора single */
|
|
35
|
+
isSelectionSingle: false;
|
|
36
|
+
/** Режим выбора multi */
|
|
37
|
+
isSelectionMultiple: true;
|
|
38
|
+
} & SelectionMultipleState;
|
|
39
|
+
type SelectionNoneProps = {
|
|
40
|
+
mode?: 'none';
|
|
41
|
+
value?: undefined;
|
|
42
|
+
onChange?: undefined;
|
|
43
|
+
setValue?: undefined;
|
|
44
|
+
defaultValue?: undefined;
|
|
45
|
+
isSelectionSingle?: undefined;
|
|
46
|
+
isSelectionMultiple?: undefined;
|
|
47
|
+
};
|
|
48
|
+
type SelectionContextType = Omit<SelectionNoneProps, 'defaultValue'> | Omit<SelectionSingleProps, 'defaultValue'> | Omit<SelectionMultipleProps, 'defaultValue'>;
|
|
49
|
+
export type SelectionState = {
|
|
50
|
+
selection?: SelectionSingleState | SelectionMultipleState;
|
|
51
|
+
};
|
|
52
|
+
export declare const SelectionContext: import("react").Context<SelectionContextType>;
|
|
53
|
+
export declare function isSelectionMultipleProps(props: AnyType): props is SelectionMultipleProps;
|
|
54
|
+
export declare function isSelectionSingleProps(props: AnyType): props is SelectionSingleProps;
|
|
55
|
+
type Child = {
|
|
56
|
+
children: ReactNode;
|
|
57
|
+
};
|
|
58
|
+
type SelectionProviderProps = {
|
|
59
|
+
/** Начальное состояние */
|
|
60
|
+
defaultValue?: AnyType;
|
|
61
|
+
/** Controlled состояние */
|
|
62
|
+
value?: AnyType;
|
|
63
|
+
/** Controlled обработчик измения состояния */
|
|
64
|
+
onChange?: OnChangeHandler;
|
|
65
|
+
/** Режим выбора */
|
|
66
|
+
mode?: 'multiple' | 'single' | 'none';
|
|
67
|
+
};
|
|
68
|
+
export declare function SelectionProvider({ children, ...props }: SelectionProviderProps & Child): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export declare function useSelectionContext(): SelectionContextType;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { KeyboardEvent, RefObject } from 'react';
|
|
2
|
+
import { FocusFlattenItem, ItemId } from '../Items';
|
|
3
|
+
type UseNewKeyboardNavigationProps<T extends HTMLElement> = {
|
|
4
|
+
mainRef?: RefObject<T>;
|
|
5
|
+
btnRef?: RefObject<HTMLButtonElement>;
|
|
6
|
+
focusFlattenItems: Record<string, FocusFlattenItem>;
|
|
7
|
+
};
|
|
8
|
+
export declare function useNewKeyboardNavigation<T extends HTMLElement>({ mainRef, btnRef, focusFlattenItems, }: UseNewKeyboardNavigationProps<T>): {
|
|
9
|
+
resetActiveItemId: () => void;
|
|
10
|
+
activeItemId: ItemId | undefined;
|
|
11
|
+
forceUpdateActiveItemId: (itemId: ItemId) => void;
|
|
12
|
+
handleListKeyDownFactory: (ids: ItemId[], expandedIds: ItemId[]) => (e: KeyboardEvent<T>) => void;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './Droplist';
|
|
2
|
+
export * from './List';
|
|
3
|
+
export type { ListProps, DroplistProps } from './types';
|
|
4
|
+
export type { SelectionSingleState, SelectionMultipleState, SelectionSingleProps, SelectionMultipleProps, SelectionSingleValueType, } from './contexts';
|
|
5
|
+
export { useSelectionContext, useCollapseContext, isSelectionSingleProps, isSelectionMultipleProps } from './contexts';
|