@redneckz/wildless-cms-uni-blocks 0.14.875 → 0.14.876
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/bundle/bundle.umd.js +78 -46
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/Header/DropdownButton.d.ts +2 -0
- package/bundle/components/Header/DropdownMenu.d.ts +5 -2
- package/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/bundle/data/NavigationData.d.ts +1 -0
- package/dist/components/Header/DropdownButton.d.ts +2 -0
- package/dist/components/Header/DropdownButton.js +11 -0
- package/dist/components/Header/DropdownButton.js.map +1 -0
- package/dist/components/Header/DropdownMenu.d.ts +5 -2
- package/dist/components/Header/DropdownMenu.js +2 -36
- package/dist/components/Header/DropdownMenu.js.map +1 -1
- package/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/dist/components/Header/HeaderMoreMenuItem.js +27 -0
- package/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/dist/components/Header/HeaderSubMenu.js +2 -2
- package/dist/components/Header/HeaderSubMenu.js.map +1 -1
- package/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/dist/components/Header/HeaderSubMenuItem.js +19 -2
- package/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/dist/components/Header/HeaderTopMenu.js +2 -2
- package/dist/components/Header/HeaderTopMenu.js.map +1 -1
- package/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/dist/components/Header/useDropdownSubMenu.js +37 -0
- package/dist/components/Header/useDropdownSubMenu.js.map +1 -0
- package/dist/data/NavigationData.d.ts +1 -0
- package/lib/components/Header/DropdownButton.d.ts +2 -0
- package/lib/components/Header/DropdownButton.js +9 -0
- package/lib/components/Header/DropdownButton.js.map +1 -0
- package/lib/components/Header/DropdownMenu.d.ts +5 -2
- package/lib/components/Header/DropdownMenu.js +2 -37
- package/lib/components/Header/DropdownMenu.js.map +1 -1
- package/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/lib/components/Header/HeaderMoreMenuItem.js +25 -0
- package/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/lib/components/Header/HeaderSubMenu.js +2 -2
- package/lib/components/Header/HeaderSubMenu.js.map +1 -1
- package/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/lib/components/Header/HeaderSubMenuItem.js +20 -3
- package/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/lib/components/Header/HeaderTopMenu.js +2 -2
- package/lib/components/Header/HeaderTopMenu.js.map +1 -1
- package/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/lib/components/Header/useDropdownSubMenu.js +34 -0
- package/lib/components/Header/useDropdownSubMenu.js.map +1 -0
- package/lib/data/NavigationData.d.ts +1 -0
- package/mobile/bundle/bundle.umd.js +1 -1
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/bundle/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/bundle/data/NavigationData.d.ts +1 -0
- package/mobile/dist/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/dist/components/Header/DropdownButton.js +11 -0
- package/mobile/dist/components/Header/DropdownButton.js.map +1 -0
- package/mobile/dist/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/dist/components/Header/DropdownMenu.js +2 -36
- package/mobile/dist/components/Header/DropdownMenu.js.map +1 -1
- package/mobile/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/dist/components/Header/HeaderMoreMenuItem.js +27 -0
- package/mobile/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/mobile/dist/components/Header/HeaderSubMenu.js +2 -2
- package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
- package/mobile/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/dist/components/Header/HeaderSubMenuItem.js +19 -2
- package/mobile/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/mobile/dist/components/Header/HeaderTopMenu.js +2 -2
- package/mobile/dist/components/Header/HeaderTopMenu.js.map +1 -1
- package/mobile/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/dist/components/Header/useDropdownSubMenu.js +37 -0
- package/mobile/dist/components/Header/useDropdownSubMenu.js.map +1 -0
- package/mobile/dist/data/NavigationData.d.ts +1 -0
- package/mobile/lib/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/lib/components/Header/DropdownButton.js +9 -0
- package/mobile/lib/components/Header/DropdownButton.js.map +1 -0
- package/mobile/lib/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/lib/components/Header/DropdownMenu.js +2 -37
- package/mobile/lib/components/Header/DropdownMenu.js.map +1 -1
- package/mobile/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/lib/components/Header/HeaderMoreMenuItem.js +25 -0
- package/mobile/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/mobile/lib/components/Header/HeaderSubMenu.js +2 -2
- package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
- package/mobile/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/lib/components/Header/HeaderSubMenuItem.js +20 -3
- package/mobile/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/mobile/lib/components/Header/HeaderTopMenu.js +2 -2
- package/mobile/lib/components/Header/HeaderTopMenu.js.map +1 -1
- package/mobile/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/lib/components/Header/useDropdownSubMenu.js +34 -0
- package/mobile/lib/components/Header/useDropdownSubMenu.js.map +1 -0
- package/mobile/lib/data/NavigationData.d.ts +1 -0
- package/mobile/src/components/Header/DropdownButton.tsx +26 -0
- package/mobile/src/components/Header/DropdownMenu.tsx +15 -85
- package/mobile/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
- package/mobile/src/components/Header/HeaderSubMenu.tsx +3 -2
- package/mobile/src/components/Header/HeaderSubMenuItem.tsx +31 -5
- package/mobile/src/components/Header/HeaderTopMenu.tsx +3 -3
- package/mobile/src/components/Header/useDropdownSubMenu.tsx +48 -0
- package/mobile/src/data/NavigationData.ts +1 -0
- package/package.json +1 -1
- package/src/components/Header/DropdownButton.tsx +26 -0
- package/src/components/Header/DropdownMenu.tsx +15 -85
- package/src/components/Header/Header.fixture.tsx +4 -0
- package/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
- package/src/components/Header/HeaderSubMenu.tsx +3 -2
- package/src/components/Header/HeaderSubMenuItem.tsx +31 -5
- package/src/components/Header/HeaderTopMenu.tsx +3 -3
- package/src/components/Header/useDropdownSubMenu.tsx +48 -0
- package/src/data/NavigationData.ts +1 -0
- package/src/icons/IconName.ts +4 -4
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { useCallback, useEffect, useRef } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
-
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
4
|
-
import { useEventListener } from '@redneckz/uni-jsx/lib/hooks/useEventListener';
|
|
5
|
-
import { useOutsideClick } from '@redneckz/uni-jsx/lib/hooks/useOutsideClick';
|
|
6
2
|
import { useLink } from '../../hooks/useLink';
|
|
7
3
|
import { type ComponentType } from '../../model/ComponentType';
|
|
8
4
|
import { type LinkProps } from '../../model/LinkProps';
|
|
@@ -10,91 +6,25 @@ import { getAspectsAttributes } from '../../utils/dataAttributes';
|
|
|
10
6
|
import { style } from '../../utils/style';
|
|
11
7
|
|
|
12
8
|
interface DropdownMenuProps extends ComponentType {
|
|
13
|
-
|
|
9
|
+
dropdownRef?: { current: HTMLDivElement | null };
|
|
10
|
+
items?: LinkProps[];
|
|
14
11
|
activeItem?: LinkProps;
|
|
15
12
|
ariaLabel?: string;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const ref = useOutsideClick<HTMLDivElement>(setFalse);
|
|
32
|
-
const dropdownRef = useRef<HTMLDivElement | null>(null);
|
|
33
|
-
|
|
34
|
-
const changeDropdownPosition = useCallback(
|
|
35
|
-
({ isOpened, buttonRef, menuRef }: ChangeDropdownPositionParams) => {
|
|
36
|
-
if (isOpened && buttonRef.current && menuRef.current) {
|
|
37
|
-
const dropdownRect = menuRef.current.getBoundingClientRect();
|
|
38
|
-
const dropdownButtonRect = buttonRef.current.getBoundingClientRect();
|
|
39
|
-
const newDropdownPosition = globalThis.innerWidth - dropdownRect.width;
|
|
40
|
-
|
|
41
|
-
if (dropdownRect.right >= globalThis.innerWidth) {
|
|
42
|
-
menuRef.current.style.left = `${newDropdownPosition}px`;
|
|
43
|
-
} else if (dropdownButtonRect.left > dropdownRect.left) {
|
|
44
|
-
if (newDropdownPosition > dropdownButtonRect.left) {
|
|
45
|
-
menuRef.current.style.left = '';
|
|
46
|
-
} else {
|
|
47
|
-
menuRef.current.style.left = `${newDropdownPosition}px`;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
[isVisible],
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
useEventListener(globalThis, 'resize', () =>
|
|
56
|
-
changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef }),
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef });
|
|
61
|
-
}, [isVisible]);
|
|
62
|
-
|
|
63
|
-
return (
|
|
64
|
-
<div
|
|
65
|
-
className={style(isVisible ? 'rounded-md shadow-blue-gray' : '', className)}
|
|
66
|
-
ref={ref}
|
|
67
|
-
role="navigation"
|
|
68
|
-
>
|
|
69
|
-
<button
|
|
70
|
-
type="button"
|
|
71
|
-
className="group/btn flex justify-between items-center h-6"
|
|
72
|
-
aria-label={ariaLabel}
|
|
73
|
-
onClick={toggle}
|
|
74
|
-
role="button"
|
|
75
|
-
aria-labelledby="labeldiv"
|
|
76
|
-
>
|
|
77
|
-
{Array(3)
|
|
78
|
-
.fill(null)
|
|
79
|
-
.map((_, i) => (
|
|
80
|
-
<div
|
|
81
|
-
key={String(i)}
|
|
82
|
-
className="w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white"
|
|
83
|
-
/>
|
|
84
|
-
))}
|
|
85
|
-
</button>
|
|
86
|
-
<div
|
|
87
|
-
ref={dropdownRef}
|
|
88
|
-
className={style('absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40', {
|
|
89
|
-
hidden: !isVisible,
|
|
90
|
-
})}
|
|
91
|
-
aria-hidden={!isVisible}
|
|
92
|
-
>
|
|
93
|
-
{renderDropdownItems(items, activeItem)}
|
|
94
|
-
</div>
|
|
95
|
-
</div>
|
|
96
|
-
);
|
|
97
|
-
},
|
|
15
|
+
export const DropdownMenu = ({
|
|
16
|
+
dropdownRef,
|
|
17
|
+
items = [],
|
|
18
|
+
activeItem,
|
|
19
|
+
ariaLabel,
|
|
20
|
+
}: DropdownMenuProps) => (
|
|
21
|
+
<div
|
|
22
|
+
ref={dropdownRef}
|
|
23
|
+
className="absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40"
|
|
24
|
+
aria-label={ariaLabel}
|
|
25
|
+
>
|
|
26
|
+
{renderDropdownItems(items, activeItem)}
|
|
27
|
+
</div>
|
|
98
28
|
);
|
|
99
29
|
|
|
100
30
|
export const DropdownMenuItem = JSX<LinkProps & { isActive?: boolean }>(({ isActive, ...rest }) => {
|
|
@@ -2,6 +2,7 @@ import '../../setup-fixture';
|
|
|
2
2
|
|
|
3
3
|
import { type BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
|
|
4
4
|
import { DialogManager } from '../../ui-kit/DialogManager/DialogManager';
|
|
5
|
+
import { PopupManager } from '../../ui-kit/PopupManager/PopupManager';
|
|
5
6
|
import { Header } from './Header';
|
|
6
7
|
import { type HeaderProps } from './HeaderProps';
|
|
7
8
|
|
|
@@ -27,18 +28,21 @@ export default {
|
|
|
27
28
|
<div>
|
|
28
29
|
<Header options={options} {...props} />
|
|
29
30
|
<DialogManager />
|
|
31
|
+
<PopupManager />
|
|
30
32
|
</div>
|
|
31
33
|
),
|
|
32
34
|
customLogo: (
|
|
33
35
|
<div>
|
|
34
36
|
<Header options={options} {...props} logo={logo} />
|
|
35
37
|
<DialogManager />
|
|
38
|
+
<PopupManager />
|
|
36
39
|
</div>
|
|
37
40
|
),
|
|
38
41
|
transparent: (
|
|
39
42
|
<div>
|
|
40
43
|
<Header options={options} {...props} bgColor="transparent" />
|
|
41
44
|
<DialogManager />
|
|
45
|
+
<PopupManager />
|
|
42
46
|
</div>
|
|
43
47
|
),
|
|
44
48
|
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
4
|
+
import { type ComponentType } from '../../model/ComponentType';
|
|
5
|
+
import { type LinkProps } from '../../model/LinkProps';
|
|
6
|
+
import { style } from '../../utils/style';
|
|
7
|
+
import { useDropdownSubMenu } from './useDropdownSubMenu';
|
|
8
|
+
|
|
9
|
+
interface HeaderMoreMenuItemProps extends ComponentType {
|
|
10
|
+
items: LinkProps[];
|
|
11
|
+
activeItem?: LinkProps;
|
|
12
|
+
ariaLabel?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const HeaderMoreMenuItem = JSX<HeaderMoreMenuItemProps>(
|
|
16
|
+
({ className = '', items, activeItem, ariaLabel = 'Меню' }) => {
|
|
17
|
+
const [isOpenDropdown, { setFalse, toggle }] = useBool(false);
|
|
18
|
+
|
|
19
|
+
const dropdownMenu = useDropdownSubMenu({
|
|
20
|
+
items,
|
|
21
|
+
onClose: setFalse,
|
|
22
|
+
isOpen: isOpenDropdown,
|
|
23
|
+
activeItem,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
dropdownMenu.current?.addEventListener('mouseleave', setFalse);
|
|
28
|
+
|
|
29
|
+
return () => {
|
|
30
|
+
dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
className={style(isOpenDropdown ? 'rounded-md shadow-blue-gray' : '', className)}
|
|
37
|
+
ref={dropdownMenu}
|
|
38
|
+
role="navigation"
|
|
39
|
+
>
|
|
40
|
+
<button
|
|
41
|
+
type="button"
|
|
42
|
+
className="group/btn flex justify-between items-center h-6"
|
|
43
|
+
aria-label={ariaLabel}
|
|
44
|
+
onClick={toggle}
|
|
45
|
+
role="button"
|
|
46
|
+
aria-labelledby="labeldiv"
|
|
47
|
+
>
|
|
48
|
+
{Array(3)
|
|
49
|
+
.fill(null)
|
|
50
|
+
.map((_, i) => (
|
|
51
|
+
<div
|
|
52
|
+
key={String(i)}
|
|
53
|
+
className="w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white"
|
|
54
|
+
/>
|
|
55
|
+
))}
|
|
56
|
+
</button>
|
|
57
|
+
</div>
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
);
|
|
@@ -6,8 +6,8 @@ import { type IntersectionObserverOptions } from '../../hooks/useIntersectionObs
|
|
|
6
6
|
import { type BlockVersion } from '../../model/BlockVersion';
|
|
7
7
|
import { type IconVersion } from '../../model/IconVersion';
|
|
8
8
|
import { projectSettings } from '../../ProjectSettings';
|
|
9
|
-
import { DropdownMenu } from './DropdownMenu';
|
|
10
9
|
import { HeaderChatBotButton } from './HeaderChatBotButton';
|
|
10
|
+
import { HeaderMoreMenuItem } from './HeaderMoreMenuItem';
|
|
11
11
|
import { type InternetButtonProps } from './HeaderProps';
|
|
12
12
|
import { HeaderSubMenuItem } from './HeaderSubMenuItem';
|
|
13
13
|
import { InternetBankButton } from './InternetBankButton';
|
|
@@ -56,6 +56,7 @@ export const HeaderSubMenu = JSX<HeaderSubMenuProps>(
|
|
|
56
56
|
key={String(i)}
|
|
57
57
|
className={visibleItemsCount - 1 < i ? 'invisible' : ''}
|
|
58
58
|
active={_ === activeSubItem}
|
|
59
|
+
activeItem={activeSubItem}
|
|
59
60
|
observerOptions={observerOptions}
|
|
60
61
|
onVisibilityChange={subItemsVisibilityHandlers[i]}
|
|
61
62
|
data={_.dataHeader}
|
|
@@ -64,7 +65,7 @@ export const HeaderSubMenu = JSX<HeaderSubMenuProps>(
|
|
|
64
65
|
))}
|
|
65
66
|
</div>
|
|
66
67
|
{dropDownMenuItems.length ? (
|
|
67
|
-
<
|
|
68
|
+
<HeaderMoreMenuItem
|
|
68
69
|
items={dropDownMenuItems}
|
|
69
70
|
activeItem={activeSubItem}
|
|
70
71
|
ariaLabel={dropdownMenuAriaLabel}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
|
+
import { useCallback, useEffect } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
4
|
+
import { type NavigationLinkProps } from '../../data/NavigationData';
|
|
3
5
|
import {
|
|
4
6
|
useIntersectionObserver,
|
|
5
7
|
type IntersectionObserverOptions,
|
|
@@ -7,15 +9,20 @@ import {
|
|
|
7
9
|
import { type ComponentType } from '../../model/ComponentType';
|
|
8
10
|
import { type LinkProps } from '../../model/LinkProps';
|
|
9
11
|
import { HeaderItem } from '../../ui-kit/HeaderItem/HeaderItem';
|
|
12
|
+
import { useDropdownSubMenu } from './useDropdownSubMenu';
|
|
10
13
|
|
|
11
14
|
export interface HeaderSubMenuItemProps extends LinkProps, ComponentType {
|
|
12
15
|
active?: boolean;
|
|
16
|
+
activeItem?: LinkProps;
|
|
13
17
|
observerOptions?: IntersectionObserverOptions;
|
|
14
18
|
onVisibilityChange?: (isIntersecting: boolean) => void;
|
|
19
|
+
items?: NavigationLinkProps[];
|
|
15
20
|
}
|
|
16
21
|
|
|
17
22
|
export const HeaderSubMenuItem = JSX<HeaderSubMenuItemProps>(
|
|
18
|
-
({ observerOptions, onVisibilityChange, children, className, ...rest }) => {
|
|
23
|
+
({ observerOptions, onVisibilityChange, children, className, items, activeItem, ...rest }) => {
|
|
24
|
+
const [isOpenDropdown, { setFalse, setTrue }] = useBool(false);
|
|
25
|
+
|
|
19
26
|
const observerCallback = useCallback(
|
|
20
27
|
(entries: IntersectionObserverEntry[]) => {
|
|
21
28
|
if (!entries.length || !onVisibilityChange) {
|
|
@@ -31,10 +38,29 @@ export const HeaderSubMenuItem = JSX<HeaderSubMenuItemProps>(
|
|
|
31
38
|
);
|
|
32
39
|
const ref = useIntersectionObserver<HTMLSpanElement>(observerCallback, observerOptions);
|
|
33
40
|
|
|
41
|
+
const dropdownMenu = useDropdownSubMenu({
|
|
42
|
+
items,
|
|
43
|
+
onClose: setFalse,
|
|
44
|
+
isOpen: isOpenDropdown,
|
|
45
|
+
activeItem,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
dropdownMenu.current?.addEventListener('mouseenter', setTrue);
|
|
50
|
+
dropdownMenu.current?.addEventListener('mouseleave', setFalse);
|
|
51
|
+
|
|
52
|
+
return () => {
|
|
53
|
+
dropdownMenu.current?.addEventListener('mouseenter', setTrue);
|
|
54
|
+
dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
|
|
55
|
+
};
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
34
58
|
return (
|
|
35
|
-
<
|
|
36
|
-
<
|
|
37
|
-
|
|
59
|
+
<div className="inline-block" ref={dropdownMenu}>
|
|
60
|
+
<span ref={ref} className={className} role="menuitem">
|
|
61
|
+
<HeaderItem {...rest}>{children}</HeaderItem>
|
|
62
|
+
</span>
|
|
63
|
+
</div>
|
|
38
64
|
);
|
|
39
65
|
},
|
|
40
66
|
);
|
|
@@ -10,7 +10,7 @@ import { type BlockVersion } from '../../model/BlockVersion';
|
|
|
10
10
|
import { type ComponentType } from '../../model/ComponentType';
|
|
11
11
|
import { type LogoType } from '../../model/LogoType';
|
|
12
12
|
import { Logo } from '../../ui-kit/Logo/Logo';
|
|
13
|
-
import {
|
|
13
|
+
import { HeaderMoreMenuItem } from './HeaderMoreMenuItem';
|
|
14
14
|
import { HeaderSecondaryMenu } from './HeaderSecondaryMenu';
|
|
15
15
|
import { HeaderTopMenuItem } from './HeaderTopMenuItem';
|
|
16
16
|
|
|
@@ -80,8 +80,8 @@ export const HeaderTopMenu = JSX<HeaderMenuProps>(
|
|
|
80
80
|
))}
|
|
81
81
|
</div>
|
|
82
82
|
{dropDownMenuItems.length ? (
|
|
83
|
-
<
|
|
84
|
-
className="mx-xs"
|
|
83
|
+
<HeaderMoreMenuItem
|
|
84
|
+
className="mx-xs rounded-md shadow-blue-gray"
|
|
85
85
|
items={dropDownMenuItems}
|
|
86
86
|
activeItem={activeTopItem}
|
|
87
87
|
ariaLabel={dropdownMenuAriaLabel}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
|
+
import { useOutsideClick } from '@redneckz/uni-jsx/lib/hooks/useOutsideClick';
|
|
3
|
+
import { type LinkProps } from '../../model/LinkProps';
|
|
4
|
+
import type { OnCloseProps } from '../../model/OnCloseProps';
|
|
5
|
+
import { usePopupManager } from '../../ui-kit/PopupManager/usePopupManager';
|
|
6
|
+
import { DropdownMenu } from './DropdownMenu';
|
|
7
|
+
|
|
8
|
+
interface DropdownSubMenuOptions extends OnCloseProps {
|
|
9
|
+
isOpen?: boolean;
|
|
10
|
+
activeItem?: LinkProps;
|
|
11
|
+
items?: LinkProps[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function useDropdownSubMenu({ items, activeItem, onClose, isOpen }: DropdownSubMenuOptions) {
|
|
15
|
+
const popup = usePopupManager();
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (isOpen) {
|
|
19
|
+
popup.close();
|
|
20
|
+
}
|
|
21
|
+
}, [isOpen]);
|
|
22
|
+
|
|
23
|
+
const close = useCallback(() => {
|
|
24
|
+
popup.close();
|
|
25
|
+
onClose?.();
|
|
26
|
+
}, [onClose]);
|
|
27
|
+
|
|
28
|
+
const parentRef = useRef<HTMLDivElement | null>(null);
|
|
29
|
+
const popupRef = useOutsideClick<HTMLDivElement>(close);
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!isOpen || !parentRef.current || !items?.length) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const parentElement = parentRef.current;
|
|
37
|
+
const { top, left, width, height } = parentElement.getBoundingClientRect();
|
|
38
|
+
|
|
39
|
+
popup.open({
|
|
40
|
+
popup: <DropdownMenu dropdownRef={popupRef} items={items} activeItem={activeItem} />,
|
|
41
|
+
top: top + window.scrollY + height,
|
|
42
|
+
left,
|
|
43
|
+
width,
|
|
44
|
+
});
|
|
45
|
+
}, [isOpen, items, close]);
|
|
46
|
+
|
|
47
|
+
return parentRef;
|
|
48
|
+
}
|
package/src/icons/IconName.ts
CHANGED
|
@@ -7,11 +7,11 @@ export const IconsWithoutInversion = new Set([
|
|
|
7
7
|
]);
|
|
8
8
|
|
|
9
9
|
export enum IconMap {
|
|
10
|
-
YoutubeIcon = 'YoutubeIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', WalletIcon = 'WalletIcon', WalletAddIcon = 'WalletAddIcon', VKIcon = 'VKIcon', UserTickIcon = 'UserTickIcon', UserSquareIcon = 'UserSquareIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', TelegramIcon = 'TelegramIcon', StarIcon = 'StarIcon', SoundIcon = 'SoundIcon', SmallClockIcon = 'SmallClockIcon', SignDocsIcon = 'SignDocsIcon', ShieldTickIcon = 'ShieldTickIcon', SecurityСardIcon = 'SecurityСardIcon', SafeIcon = 'SafeIcon', RutubeIcon = 'RutubeIcon', RustoreIcon = 'RustoreIcon', RoundRubleIcon = 'RoundRubleIcon', ResponseOKIcon = 'ResponseOKIcon', ResponseFailIcon = 'ResponseFailIcon', RefreshIcon = 'RefreshIcon', ProfileIcon = 'ProfileIcon', Profile2UserIcon = 'Profile2UserIcon', PlusIcon = 'PlusIcon', PlusCircleIcon = 'PlusCircleIcon', PlayMarketIcon = 'PlayMarketIcon', PhoneIcon = 'PhoneIcon', PhoneCallingIcon = 'PhoneCallingIcon', PersonalCardIcon = 'PersonalCardIcon',
|
|
10
|
+
YoutubeIcon = 'YoutubeIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', WalletIcon = 'WalletIcon', WalletAddIcon = 'WalletAddIcon', VKIcon = 'VKIcon', UserTickIcon = 'UserTickIcon', UserSquareIcon = 'UserSquareIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', TelegramIcon = 'TelegramIcon', StarIcon = 'StarIcon', SoundIcon = 'SoundIcon', SmallClockIcon = 'SmallClockIcon', SignDocsIcon = 'SignDocsIcon', ShieldTickIcon = 'ShieldTickIcon', SecurityСardIcon = 'SecurityСardIcon', SafeIcon = 'SafeIcon', RutubeIcon = 'RutubeIcon', RustoreIcon = 'RustoreIcon', RoundRubleIcon = 'RoundRubleIcon', ResponseOKIcon = 'ResponseOKIcon', ResponseFailIcon = 'ResponseFailIcon', RefreshIcon = 'RefreshIcon', ProfileIcon = 'ProfileIcon', Profile2UserIcon = 'Profile2UserIcon', PlusIcon = 'PlusIcon', PlusCircleIcon = 'PlusCircleIcon', PlayMarketIcon = 'PlayMarketIcon', PhoneIcon = 'PhoneIcon', PhoneCallingIcon = 'PhoneCallingIcon', PersonalCardIcon = 'PersonalCardIcon', PercentageRoundIcon = 'PercentageRoundIcon', PercentIcon = 'PercentIcon', PassSendIcon = 'PassSendIcon', PackA4Icon = 'PackA4Icon', OkIcon = 'OkIcon', NotificationBingIcon = 'NotificationBingIcon', NewLoanIcon = 'NewLoanIcon', NewDocIcon = 'NewDocIcon', MonitorMobileIcon = 'MonitorMobileIcon', MoneyInsuranceIcon = 'MoneyInsuranceIcon', MoneyIcon = 'MoneyIcon', MinusIcon = 'MinusIcon', MapOpenedIcon = 'MapOpenedIcon', MapMarkerSingleIcon = 'MapMarkerSingleIcon', MapMarkerClusterYellowIcon = 'MapMarkerClusterYellowIcon', MapMarkerClusterIcon = 'MapMarkerClusterIcon', MailIcon = 'MailIcon', MagnifierIcon = 'MagnifierIcon', LoupeIcon = 'LoupeIcon', LogoIcon = 'LogoIcon', LockIcon = 'LockIcon', InfoCircleIcon = 'InfoCircleIcon', HuaweiIcon = 'HuaweiIcon', HouseIcon = 'HouseIcon', HeartTickIcon = 'HeartTickIcon', HeartIcon = 'HeartIcon', HeadphonesIcon = 'HeadphonesIcon', GridIcon = 'GridIcon', GpsIcon = 'GpsIcon', GosUslugiIcon = 'GosUslugiIcon', GlobalIcon = 'GlobalIcon', GeolocationIcon = 'GeolocationIcon', FullScreenIcon = 'FullScreenIcon', FaxIcon = 'FaxIcon', EuroIcon = 'EuroIcon', EmptyWalletIcon = 'EmptyWalletIcon', EmptyWalletChangeIcon = 'EmptyWalletChangeIcon', DzenIcon = 'DzenIcon', DoneSimpleIcon = 'DoneSimpleIcon', DoneIcon = 'DoneIcon', DollarIcon = 'DollarIcon', DocIcon = 'DocIcon', DocDownloadIcon = 'DocDownloadIcon', DiscountShapeIcon = 'DiscountShapeIcon', DevIcon = 'DevIcon', CupIcon = 'CupIcon', CourtHouseIcon = 'CourtHouseIcon', CopyIcon = 'CopyIcon', ConvertCardIcon = 'ConvertCardIcon', CoinIcon = 'CoinIcon', CloseIcon = 'CloseIcon', ClientIcon = 'ClientIcon', ChineseYuanRenminbiIcon = 'ChineseYuanRenminbiIcon', ChevronLeftIcon = 'ChevronLeftIcon', ChatBotIcon = 'ChatBotIcon', ChartSquareIcon = 'ChartSquareIcon', ChartRoundIcon = 'ChartRoundIcon', ChartIcon = 'ChartIcon', CardTickIcon = 'CardTickIcon', CardSendIcon = 'CardSendIcon', CardPosIcon = 'CardPosIcon', CardIcon = 'CardIcon', CalendarTickIcon = 'CalendarTickIcon', CalendarIcon = 'CalendarIcon', CalendarCircleIcon = 'CalendarCircleIcon', BurgerIcon = 'BurgerIcon', BuildingIcon = 'BuildingIcon', BriefcaseIcon = 'BriefcaseIcon', BelarusianFlag = 'BelarusianFlag', BankIcon = 'BankIcon', BankColorIcon = 'BankColorIcon', AtmIcon = 'AtmIcon', ArrowUpSolidIcon = 'ArrowUpSolidIcon', ArrowUpIcon = 'ArrowUpIcon', ArrowTopRightIcon = 'ArrowTopRightIcon', ArrowRightIcon = 'ArrowRightIcon', ArrowLeftIcon = 'ArrowLeftIcon', ArrowDownSolidIcon = 'ArrowDownSolidIcon', ArrowDownIcon = 'ArrowDownIcon', AppleIcon = 'AppleIcon', AlarmIcon = 'AlarmIcon', ActualBalanceIcon = 'ActualBalanceIcon', AchievementIcon = 'AchievementIcon'
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export enum IconTitleMap {
|
|
14
|
-
YoutubeIcon = 'Лого «Youtube»', WalletWithMoneyIcon = 'Кошелёк с деньгами', WalletIcon = 'Кошелёк', WalletAddIcon = 'Кошелёк с плюсом', VKIcon = 'Лого «VK»', UserTickIcon = 'Пользователь', UserSquareIcon = 'Пользователь в рамке', UserGeoLocationIcon = 'Самолётик', TelegramIcon = 'Лого «Telegram»', StarIcon = 'Звезда', SoundIcon = 'Кольцо', SmallClockIcon = 'Маленькие часы', SignDocsIcon = 'Подписанные документы', ShieldTickIcon = 'Безопасность', SecurityСardIcon = 'Безопасность', SafeIcon = 'Сейф', RutubeIcon = 'Лого «Rutube»', RustoreIcon = 'Лого «Rustore»', RoundRubleIcon = 'Рубль (круг.)', ResponseOKIcon = 'Ок', ResponseFailIcon = 'Ошибка', RefreshIcon = 'RefreshIcon', ProfileIcon = 'Профиль', Profile2UserIcon = 'Профиль, 2 персоны', PlusIcon = 'Плюс', PlusCircleIcon = 'Плюс в круге', PlayMarketIcon = 'Лого «PlayMarket»', PhoneIcon = 'Телефон', PhoneCallingIcon = 'Звонящий телефон', PersonalCardIcon = 'Персональная карта',
|
|
14
|
+
YoutubeIcon = 'Лого «Youtube»', WalletWithMoneyIcon = 'Кошелёк с деньгами', WalletIcon = 'Кошелёк', WalletAddIcon = 'Кошелёк с плюсом', VKIcon = 'Лого «VK»', UserTickIcon = 'Пользователь', UserSquareIcon = 'Пользователь в рамке', UserGeoLocationIcon = 'Самолётик', TelegramIcon = 'Лого «Telegram»', StarIcon = 'Звезда', SoundIcon = 'Кольцо', SmallClockIcon = 'Маленькие часы', SignDocsIcon = 'Подписанные документы', ShieldTickIcon = 'Безопасность', SecurityСardIcon = 'Безопасность', SafeIcon = 'Сейф', RutubeIcon = 'Лого «Rutube»', RustoreIcon = 'Лого «Rustore»', RoundRubleIcon = 'Рубль (круг.)', ResponseOKIcon = 'Ок', ResponseFailIcon = 'Ошибка', RefreshIcon = 'RefreshIcon', ProfileIcon = 'Профиль', Profile2UserIcon = 'Профиль, 2 персоны', PlusIcon = 'Плюс', PlusCircleIcon = 'Плюс в круге', PlayMarketIcon = 'Лого «PlayMarket»', PhoneIcon = 'Телефон', PhoneCallingIcon = 'Звонящий телефон', PersonalCardIcon = 'Персональная карта', PercentageRoundIcon = 'Проценты (круг.)', PercentIcon = 'Проценты', PassSendIcon = 'Бизнес', PackA4Icon = 'Пачка бумаги А4', OkIcon = 'Лого «Одноклассники»', NotificationBingIcon = 'Колокольчик нотификаций', NewLoanIcon = 'Новая заявка', NewDocIcon = 'Новый документ', MonitorMobileIcon = 'Монитор и мобильный', MoneyInsuranceIcon = 'Денежное страхование', MoneyIcon = 'Деньги', MinusIcon = 'Минус', MapOpenedIcon = 'Иконка Развёрнутая карта', MapMarkerSingleIcon = 'Маркер карты РСХБ', MapMarkerClusterYellowIcon = 'Маркер карты (желтый)', MapMarkerClusterIcon = 'Маркер карты', MailIcon = 'E-mail', MagnifierIcon = 'MagnifierIcon', LoupeIcon = 'Лупа', LogoIcon = 'Логотип', LockIcon = 'Замок', InfoCircleIcon = 'InfoCircleIcon', HuaweiIcon = 'Лого «Huawei»', HouseIcon = 'Ипотека', HeartTickIcon = 'Сердцебеение', HeartIcon = 'Сердце', HeadphonesIcon = 'HeadphonesIcon', GridIcon = 'Сетка (белая)', GpsIcon = 'Gps', GosUslugiIcon = 'ГосУслуги', GlobalIcon = 'Глобус', GeolocationIcon = 'Геолокация', FullScreenIcon = 'FullScreenIcon', FaxIcon = 'Факс', EuroIcon = 'Евро', EmptyWalletIcon = 'Пустой кошелёк', EmptyWalletChangeIcon = 'Пустой кошелёк с возвратом', DzenIcon = 'Лого «Дзен»', DoneSimpleIcon = 'Зелёная \'галочка\'', DoneIcon = 'Зелёная \'галочка\' в круге', DollarIcon = 'Доллар', DocIcon = 'Документ', DocDownloadIcon = 'Скачать документ', DiscountShapeIcon = 'Скидка', DevIcon = 'Разработка', CupIcon = 'Кубок', CourtHouseIcon = 'Здание суда', CopyIcon = 'Копирование', ConvertCardIcon = 'Конвертирование', CoinIcon = 'Монеты', CloseIcon = 'Крестик', ClientIcon = 'Клиент', ChineseYuanRenminbiIcon = 'Китайский юань', ChevronLeftIcon = 'Стрелка \'Влево\'', ChatBotIcon = 'Чат-бот', ChartSquareIcon = 'Деньги внутри кошелька', ChartRoundIcon = 'Диаграмма (в круге)', ChartIcon = 'Инвестиции', CardTickIcon = 'Кред. карта с галочкой', CardSendIcon = 'Карта', CardPosIcon = 'Кред. карта под наклоном', CardIcon = 'Кред. карта', CalendarTickIcon = 'Календарь с галочкой', CalendarIcon = 'Календарь', CalendarCircleIcon = 'Скруглённый календарь', BurgerIcon = 'Бургер', BuildingIcon = 'Здание с деревом', BriefcaseIcon = 'Портфель', BelarusianFlag = 'Белорусский флаг', BankIcon = 'Банк', BankColorIcon = 'Банк (в цвете)', AtmIcon = 'Банкомат', ArrowUpSolidIcon = 'Стрелка сплошная \'Вверх\'', ArrowUpIcon = 'Стрелка \'Вверх\'', ArrowTopRightIcon = 'Стрелка \'Вверх-право\'', ArrowRightIcon = 'Стрелка \'Вправо\'', ArrowLeftIcon = 'Стрелка \'Влево\'', ArrowDownSolidIcon = 'Стрелка сплошная \'Вниз\'', ArrowDownIcon = 'Стрелка \'Вниз\'', AppleIcon = 'Лого «Apple»', AlarmIcon = 'Предупреждение', ActualBalanceIcon = 'Деньги', AchievementIcon = 'Достижение'
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -19,7 +19,7 @@ export enum IconTitleMap {
|
|
|
19
19
|
* @title Иконка
|
|
20
20
|
* @enumNames [
|
|
21
21
|
* "",
|
|
22
|
-
* 'Лого «Youtube»', 'Кошелёк с деньгами', 'Кошелёк', 'Кошелёк с плюсом', 'Лого «VK»', 'Пользователь', 'Пользователь в рамке', 'Самолётик', 'Лого «Telegram»', 'Звезда', 'Кольцо', 'Маленькие часы', 'Подписанные документы', 'Безопасность', 'Безопасность', 'Сейф', 'Лого «Rutube»', 'Лого «Rustore»', 'Рубль (круг.)', 'Ок', 'Ошибка', 'RefreshIcon', 'Профиль', 'Профиль, 2 персоны', 'Плюс', 'Плюс в круге', 'Лого «PlayMarket»', 'Телефон', 'Звонящий телефон', 'Персональная карта', 'Проценты', 'Проценты
|
|
22
|
+
* 'Лого «Youtube»', 'Кошелёк с деньгами', 'Кошелёк', 'Кошелёк с плюсом', 'Лого «VK»', 'Пользователь', 'Пользователь в рамке', 'Самолётик', 'Лого «Telegram»', 'Звезда', 'Кольцо', 'Маленькие часы', 'Подписанные документы', 'Безопасность', 'Безопасность', 'Сейф', 'Лого «Rutube»', 'Лого «Rustore»', 'Рубль (круг.)', 'Ок', 'Ошибка', 'RefreshIcon', 'Профиль', 'Профиль, 2 персоны', 'Плюс', 'Плюс в круге', 'Лого «PlayMarket»', 'Телефон', 'Звонящий телефон', 'Персональная карта', 'Проценты (круг.)', 'Проценты', 'Бизнес', 'Пачка бумаги А4', 'Лого «Одноклассники»', 'Колокольчик нотификаций', 'Новая заявка', 'Новый документ', 'Монитор и мобильный', 'Денежное страхование', 'Деньги', 'Минус', 'Иконка Развёрнутая карта', 'Маркер карты РСХБ', 'Маркер карты (желтый)', 'Маркер карты', 'E-mail', 'MagnifierIcon', 'Лупа', 'Логотип', 'Замок', 'InfoCircleIcon', 'Лого «Huawei»', 'Ипотека', 'Сердцебеение', 'Сердце', 'HeadphonesIcon', 'Сетка (белая)', 'Gps', 'ГосУслуги', 'Глобус', 'Геолокация', 'FullScreenIcon', 'Факс', 'Евро', 'Пустой кошелёк', 'Пустой кошелёк с возвратом', 'Лого «Дзен»', 'Зелёная \'галочка\'', 'Зелёная \'галочка\' в круге', 'Доллар', 'Документ', 'Скачать документ', 'Скидка', 'Разработка', 'Кубок', 'Здание суда', 'Копирование', 'Конвертирование', 'Монеты', 'Крестик', 'Клиент', 'Китайский юань', 'Стрелка \'Влево\'', 'Чат-бот', 'Деньги внутри кошелька', 'Диаграмма (в круге)', 'Инвестиции', 'Кред. карта с галочкой', 'Карта', 'Кред. карта под наклоном', 'Кред. карта', 'Календарь с галочкой', 'Календарь', 'Скруглённый календарь', 'Бургер', 'Здание с деревом', 'Портфель', 'Белорусский флаг', 'Банк', 'Банк (в цвете)', 'Банкомат', 'Стрелка сплошная \'Вверх\'', 'Стрелка \'Вверх\'', 'Стрелка \'Вверх-право\'', 'Стрелка \'Вправо\'', 'Стрелка \'Влево\'', 'Стрелка сплошная \'Вниз\'', 'Стрелка \'Вниз\'', 'Лого «Apple»', 'Предупреждение', 'Деньги', 'Достижение'
|
|
23
23
|
* ]
|
|
24
24
|
*/
|
|
25
|
-
export type IconName = '' | 'YoutubeIcon' | 'WalletWithMoneyIcon' | 'WalletIcon' | 'WalletAddIcon' | 'VKIcon' | 'UserTickIcon' | 'UserSquareIcon' | 'UserGeoLocationIcon' | 'TelegramIcon' | 'StarIcon' | 'SoundIcon' | 'SmallClockIcon' | 'SignDocsIcon' | 'ShieldTickIcon' | 'SecurityСardIcon' | 'SafeIcon' | 'RutubeIcon' | 'RustoreIcon' | 'RoundRubleIcon' | 'ResponseOKIcon' | 'ResponseFailIcon' | 'RefreshIcon' | 'ProfileIcon' | 'Profile2UserIcon' | 'PlusIcon' | 'PlusCircleIcon' | 'PlayMarketIcon' | 'PhoneIcon' | 'PhoneCallingIcon' | 'PersonalCardIcon' | '
|
|
25
|
+
export type IconName = '' | 'YoutubeIcon' | 'WalletWithMoneyIcon' | 'WalletIcon' | 'WalletAddIcon' | 'VKIcon' | 'UserTickIcon' | 'UserSquareIcon' | 'UserGeoLocationIcon' | 'TelegramIcon' | 'StarIcon' | 'SoundIcon' | 'SmallClockIcon' | 'SignDocsIcon' | 'ShieldTickIcon' | 'SecurityСardIcon' | 'SafeIcon' | 'RutubeIcon' | 'RustoreIcon' | 'RoundRubleIcon' | 'ResponseOKIcon' | 'ResponseFailIcon' | 'RefreshIcon' | 'ProfileIcon' | 'Profile2UserIcon' | 'PlusIcon' | 'PlusCircleIcon' | 'PlayMarketIcon' | 'PhoneIcon' | 'PhoneCallingIcon' | 'PersonalCardIcon' | 'PercentageRoundIcon' | 'PercentIcon' | 'PassSendIcon' | 'PackA4Icon' | 'OkIcon' | 'NotificationBingIcon' | 'NewLoanIcon' | 'NewDocIcon' | 'MonitorMobileIcon' | 'MoneyInsuranceIcon' | 'MoneyIcon' | 'MinusIcon' | 'MapOpenedIcon' | 'MapMarkerSingleIcon' | 'MapMarkerClusterYellowIcon' | 'MapMarkerClusterIcon' | 'MailIcon' | 'MagnifierIcon' | 'LoupeIcon' | 'LogoIcon' | 'LockIcon' | 'InfoCircleIcon' | 'HuaweiIcon' | 'HouseIcon' | 'HeartTickIcon' | 'HeartIcon' | 'HeadphonesIcon' | 'GridIcon' | 'GpsIcon' | 'GosUslugiIcon' | 'GlobalIcon' | 'GeolocationIcon' | 'FullScreenIcon' | 'FaxIcon' | 'EuroIcon' | 'EmptyWalletIcon' | 'EmptyWalletChangeIcon' | 'DzenIcon' | 'DoneSimpleIcon' | 'DoneIcon' | 'DollarIcon' | 'DocIcon' | 'DocDownloadIcon' | 'DiscountShapeIcon' | 'DevIcon' | 'CupIcon' | 'CourtHouseIcon' | 'CopyIcon' | 'ConvertCardIcon' | 'CoinIcon' | 'CloseIcon' | 'ClientIcon' | 'ChineseYuanRenminbiIcon' | 'ChevronLeftIcon' | 'ChatBotIcon' | 'ChartSquareIcon' | 'ChartRoundIcon' | 'ChartIcon' | 'CardTickIcon' | 'CardSendIcon' | 'CardPosIcon' | 'CardIcon' | 'CalendarTickIcon' | 'CalendarIcon' | 'CalendarCircleIcon' | 'BurgerIcon' | 'BuildingIcon' | 'BriefcaseIcon' | 'BelarusianFlag' | 'BankIcon' | 'BankColorIcon' | 'AtmIcon' | 'ArrowUpSolidIcon' | 'ArrowUpIcon' | 'ArrowTopRightIcon' | 'ArrowRightIcon' | 'ArrowLeftIcon' | 'ArrowDownSolidIcon' | 'ArrowDownIcon' | 'AppleIcon' | 'AlarmIcon' | 'ActualBalanceIcon' | 'AchievementIcon';
|