@cloud-ru/uikit-product-site-header 0.4.8 → 0.4.9
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 +16 -1
- package/dist/cjs/components/HeaderItems/HeaderItem.d.ts +10 -0
- package/dist/cjs/components/HeaderItems/HeaderItem.js +74 -0
- package/dist/cjs/components/HeaderItems/index.d.ts +2 -0
- package/dist/cjs/components/HeaderItems/index.js +18 -0
- package/dist/cjs/components/HeaderItems/styles.module.css +44 -0
- package/dist/cjs/components/HeaderItems/types.d.ts +12 -0
- package/dist/cjs/components/HeaderItems/types.js +2 -0
- package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +45 -0
- package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.js +38 -0
- package/dist/cjs/components/SiteHeaderBasic/index.d.ts +1 -0
- package/dist/cjs/components/SiteHeaderBasic/index.js +17 -0
- package/dist/cjs/components/SiteHeaderBasic/styles.module.css +66 -0
- package/dist/cjs/components/SubHeader/SubHeader.d.ts +17 -0
- package/dist/cjs/components/SubHeader/SubHeader.js +23 -0
- package/dist/cjs/components/SubHeader/index.d.ts +1 -0
- package/dist/cjs/components/SubHeader/index.js +17 -0
- package/dist/cjs/components/SubHeader/styles.module.css +34 -0
- package/dist/cjs/components/UserDetailsDropdown/UserDetailsDropdown.d.ts +7 -0
- package/dist/cjs/components/UserDetailsDropdown/UserDetailsDropdown.js +14 -0
- package/dist/cjs/components/UserDetailsDropdown/index.d.ts +1 -0
- package/dist/cjs/components/UserDetailsDropdown/index.js +17 -0
- package/dist/cjs/components/UserDetailsDropdown/styles.module.css +13 -0
- package/dist/cjs/components/UserDetailsInline/UserDetailsInline.d.ts +8 -0
- package/dist/cjs/components/UserDetailsInline/UserDetailsInline.js +16 -0
- package/dist/cjs/components/UserDetailsInline/index.d.ts +1 -0
- package/dist/cjs/components/UserDetailsInline/index.js +17 -0
- package/dist/cjs/components/UserDetailsInline/styles.module.css +6 -0
- package/dist/cjs/components/index.d.ts +5 -0
- package/dist/cjs/components/index.js +21 -0
- package/dist/cjs/helperComponents/ButtonBurger/ButtonBurger.d.ts +6 -0
- package/dist/cjs/helperComponents/ButtonBurger/ButtonBurger.js +12 -0
- package/dist/cjs/helperComponents/ButtonBurger/index.d.ts +1 -0
- package/dist/cjs/helperComponents/ButtonBurger/index.js +17 -0
- package/dist/cjs/helperComponents/ButtonBurger/styles.module.css +17 -0
- package/dist/cjs/helperComponents/LinkItemHeader/LinkItemHeader.d.ts +10 -0
- package/dist/cjs/helperComponents/LinkItemHeader/LinkItemHeader.js +19 -0
- package/dist/cjs/helperComponents/LinkItemHeader/index.d.ts +1 -0
- package/dist/cjs/helperComponents/LinkItemHeader/index.js +17 -0
- package/dist/cjs/helperComponents/LinkItemHeader/styles.module.css +46 -0
- package/dist/cjs/helperComponents/LogoContent/LogoContent.d.ts +7 -0
- package/dist/cjs/helperComponents/LogoContent/LogoContent.js +14 -0
- package/dist/cjs/helperComponents/LogoContent/index.d.ts +1 -0
- package/dist/cjs/helperComponents/LogoContent/index.js +17 -0
- package/dist/cjs/helperComponents/LogoContent/styles.module.css +35 -0
- package/dist/cjs/helperComponents/MobileMenu/MobileMenu.d.ts +9 -0
- package/dist/cjs/helperComponents/MobileMenu/MobileMenu.js +12 -0
- package/dist/cjs/helperComponents/MobileMenu/index.d.ts +1 -0
- package/dist/cjs/helperComponents/MobileMenu/index.js +17 -0
- package/dist/cjs/helperComponents/MobileMenu/styles.module.css +7 -0
- package/dist/cjs/helperComponents/MoreButton/MoreButton.d.ts +7 -0
- package/dist/cjs/helperComponents/MoreButton/MoreButton.js +29 -0
- package/dist/cjs/helperComponents/MoreButton/index.d.ts +1 -0
- package/dist/cjs/helperComponents/MoreButton/index.js +17 -0
- package/dist/cjs/helperComponents/MoreButton/styles.module.css +33 -0
- package/dist/cjs/helperComponents/UserInfo/UserInfo.d.ts +7 -0
- package/dist/cjs/helperComponents/UserInfo/UserInfo.js +15 -0
- package/dist/cjs/helperComponents/UserInfo/index.d.ts +1 -0
- package/dist/cjs/helperComponents/UserInfo/index.js +17 -0
- package/dist/cjs/helperComponents/UserInfo/styles.module.css +13 -0
- package/dist/cjs/helperComponents/index.d.ts +5 -0
- package/dist/cjs/helperComponents/index.js +21 -0
- package/dist/cjs/hooks/index.d.ts +2 -0
- package/dist/cjs/hooks/index.js +18 -0
- package/dist/cjs/hooks/useHeaderPosition.d.ts +6 -0
- package/dist/cjs/hooks/useHeaderPosition.js +47 -0
- package/dist/cjs/hooks/useResizeObserver.d.ts +3 -0
- package/dist/cjs/hooks/useResizeObserver.js +21 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +17 -0
- package/dist/esm/components/HeaderItems/HeaderItem.d.ts +10 -0
- package/dist/esm/components/HeaderItems/HeaderItem.js +68 -0
- package/dist/esm/components/HeaderItems/index.d.ts +2 -0
- package/dist/esm/components/HeaderItems/index.js +2 -0
- package/dist/esm/components/HeaderItems/styles.module.css +44 -0
- package/dist/esm/components/HeaderItems/types.d.ts +12 -0
- package/dist/esm/components/HeaderItems/types.js +1 -0
- package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +45 -0
- package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.js +32 -0
- package/dist/esm/components/SiteHeaderBasic/index.d.ts +1 -0
- package/dist/esm/components/SiteHeaderBasic/index.js +1 -0
- package/dist/esm/components/SiteHeaderBasic/styles.module.css +66 -0
- package/dist/esm/components/SubHeader/SubHeader.d.ts +17 -0
- package/dist/esm/components/SubHeader/SubHeader.js +17 -0
- package/dist/esm/components/SubHeader/index.d.ts +1 -0
- package/dist/esm/components/SubHeader/index.js +1 -0
- package/dist/esm/components/SubHeader/styles.module.css +34 -0
- package/dist/esm/components/UserDetailsDropdown/UserDetailsDropdown.d.ts +7 -0
- package/dist/esm/components/UserDetailsDropdown/UserDetailsDropdown.js +8 -0
- package/dist/esm/components/UserDetailsDropdown/index.d.ts +1 -0
- package/dist/esm/components/UserDetailsDropdown/index.js +1 -0
- package/dist/esm/components/UserDetailsDropdown/styles.module.css +13 -0
- package/dist/esm/components/UserDetailsInline/UserDetailsInline.d.ts +8 -0
- package/dist/esm/components/UserDetailsInline/UserDetailsInline.js +10 -0
- package/dist/esm/components/UserDetailsInline/index.d.ts +1 -0
- package/dist/esm/components/UserDetailsInline/index.js +1 -0
- package/dist/esm/components/UserDetailsInline/styles.module.css +6 -0
- package/dist/esm/components/index.d.ts +5 -0
- package/dist/esm/components/index.js +5 -0
- package/dist/esm/helperComponents/ButtonBurger/ButtonBurger.d.ts +6 -0
- package/dist/esm/helperComponents/ButtonBurger/ButtonBurger.js +6 -0
- package/dist/esm/helperComponents/ButtonBurger/index.d.ts +1 -0
- package/dist/esm/helperComponents/ButtonBurger/index.js +1 -0
- package/dist/esm/helperComponents/ButtonBurger/styles.module.css +17 -0
- package/dist/esm/helperComponents/LinkItemHeader/LinkItemHeader.d.ts +10 -0
- package/dist/esm/helperComponents/LinkItemHeader/LinkItemHeader.js +13 -0
- package/dist/esm/helperComponents/LinkItemHeader/index.d.ts +1 -0
- package/dist/esm/helperComponents/LinkItemHeader/index.js +1 -0
- package/dist/esm/helperComponents/LinkItemHeader/styles.module.css +46 -0
- package/dist/esm/helperComponents/LogoContent/LogoContent.d.ts +7 -0
- package/dist/esm/helperComponents/LogoContent/LogoContent.js +8 -0
- package/dist/esm/helperComponents/LogoContent/index.d.ts +1 -0
- package/dist/esm/helperComponents/LogoContent/index.js +1 -0
- package/dist/esm/helperComponents/LogoContent/styles.module.css +35 -0
- package/dist/esm/helperComponents/MobileMenu/MobileMenu.d.ts +9 -0
- package/dist/esm/helperComponents/MobileMenu/MobileMenu.js +6 -0
- package/dist/esm/helperComponents/MobileMenu/index.d.ts +1 -0
- package/dist/esm/helperComponents/MobileMenu/index.js +1 -0
- package/dist/esm/helperComponents/MobileMenu/styles.module.css +7 -0
- package/dist/esm/helperComponents/MoreButton/MoreButton.d.ts +7 -0
- package/dist/esm/helperComponents/MoreButton/MoreButton.js +23 -0
- package/dist/esm/helperComponents/MoreButton/index.d.ts +1 -0
- package/dist/esm/helperComponents/MoreButton/index.js +1 -0
- package/dist/esm/helperComponents/MoreButton/styles.module.css +33 -0
- package/dist/esm/helperComponents/UserInfo/UserInfo.d.ts +7 -0
- package/dist/esm/helperComponents/UserInfo/UserInfo.js +9 -0
- package/dist/esm/helperComponents/UserInfo/index.d.ts +1 -0
- package/dist/esm/helperComponents/UserInfo/index.js +1 -0
- package/dist/esm/helperComponents/UserInfo/styles.module.css +13 -0
- package/dist/esm/helperComponents/index.d.ts +5 -0
- package/dist/esm/helperComponents/index.js +5 -0
- package/dist/esm/hooks/index.d.ts +2 -0
- package/dist/esm/hooks/index.js +2 -0
- package/dist/esm/hooks/useHeaderPosition.d.ts +6 -0
- package/dist/esm/hooks/useHeaderPosition.js +43 -0
- package/dist/esm/hooks/useResizeObserver.d.ts +3 -0
- package/dist/esm/hooks/useResizeObserver.js +17 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type MobileMenuProps = {
|
|
3
|
+
mobileMenuOpen: boolean;
|
|
4
|
+
mobileMenuContent: ReactNode;
|
|
5
|
+
mobileConsultationButton?: ReactNode;
|
|
6
|
+
onClickForCloseMobileMenu: () => void;
|
|
7
|
+
};
|
|
8
|
+
export declare function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }: MobileMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MobileModalCustom } from '@sbercloud/uikit-product-mobile-modal';
|
|
3
|
+
import styles from './styles.module.css';
|
|
4
|
+
export function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }) {
|
|
5
|
+
return (_jsxs(MobileModalCustom, { open: mobileMenuOpen, onClose: onClickForCloseMobileMenu, className: styles.mobileMenu, children: [_jsx(MobileModalCustom.Header, { title: '\u041C\u0435\u043D\u044E', align: 'center' }), _jsx(MobileModalCustom.Body, { content: mobileMenuContent }), mobileConsultationButton && _jsx(MobileModalCustom.Footer, { actions: mobileConsultationButton })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobileMenu';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobileMenu';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LinkItem } from '../../components/HeaderItems/types';
|
|
2
|
+
type MoreButtonProps = {
|
|
3
|
+
linkItemsArray: LinkItem[];
|
|
4
|
+
activeItemId?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function MoreButton({ linkItemsArray, activeItemId }: MoreButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { MoreSVG } from '@sbercloud/uikit-product-icons';
|
|
5
|
+
import { Dropdown } from '@snack-uikit/dropdown';
|
|
6
|
+
import { LinkItemHeader } from '../LinkItemHeader';
|
|
7
|
+
import styles from './styles.module.css';
|
|
8
|
+
export function MoreButton({ linkItemsArray, activeItemId }) {
|
|
9
|
+
const [open, setOpen] = useState(false);
|
|
10
|
+
const onClickOpen = () => {
|
|
11
|
+
setOpen(prev => !prev);
|
|
12
|
+
};
|
|
13
|
+
return (_jsx(Dropdown, { placement: 'bottom-start', open: open, outsideClick: () => {
|
|
14
|
+
onClickOpen();
|
|
15
|
+
return false;
|
|
16
|
+
}, content: _jsx("div", { className: styles.tagRowDropListScroll, children: linkItemsArray.map(item => (_jsx("div", { className: cn(styles.rowLinkMore, {
|
|
17
|
+
[styles.hovered]: !item.href,
|
|
18
|
+
[styles.active]: item.id === activeItemId && !item.href,
|
|
19
|
+
}), children: _jsx(LinkItemHeader, { label: item.label, onClick: () => {
|
|
20
|
+
item.onClick && item.onClick();
|
|
21
|
+
onClickOpen();
|
|
22
|
+
}, href: item.href, withoutHover: true }) }, item.id))) }), children: _jsx("button", { className: styles.button, onClick: onClickOpen, children: _jsx(MoreSVG, {}) }) }));
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MoreButton';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MoreButton';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.tagRowDropListScroll{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
align-items:start;
|
|
5
|
+
width:140px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.rowLinkMore{
|
|
9
|
+
padding:8px 10px;
|
|
10
|
+
border-left:2px solid transparent;
|
|
11
|
+
transition:color 0.3s ease-in-out;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.hovered:hover{
|
|
15
|
+
border-left:2px solid var(--sys-primary-accent-default, #26d07c);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.button{
|
|
19
|
+
background-color:transparent;
|
|
20
|
+
border:none;
|
|
21
|
+
box-shadow:none;
|
|
22
|
+
padding:0;
|
|
23
|
+
display:flex;
|
|
24
|
+
align-items:center;
|
|
25
|
+
cursor:pointer;
|
|
26
|
+
}
|
|
27
|
+
.button:active, .button:focus{
|
|
28
|
+
outline:none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.active{
|
|
32
|
+
border-left:2px solid var(--sys-primary-accent-default, #26d07c);
|
|
33
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { Avatar } from '@snack-uikit/avatar';
|
|
4
|
+
import { Typography } from '@snack-uikit/typography';
|
|
5
|
+
import styles from './styles.module.css';
|
|
6
|
+
export function UserInfo({ userName, lastName, className }) {
|
|
7
|
+
const fullName = `${lastName} ${userName}`;
|
|
8
|
+
return (_jsxs("div", { className: cn(styles.root, className), children: [_jsx(Avatar, { name: fullName, size: 'xs', showTwoSymbols: true, appearance: 'green' }), _jsx(Typography, { tag: 'div', size: 's', purpose: 'body', family: 'sans', className: styles.text, children: fullName })] }));
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UserInfo';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UserInfo';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export const useHeaderPosition = (isModalMenuOpen, refHeader) => {
|
|
3
|
+
const [showHeader, setShowHeader] = useState(true);
|
|
4
|
+
const [headerPosition, setHeaderPosition] = useState(0);
|
|
5
|
+
const [headerHeight, setHeaderHeight] = useState(0);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const targetScroll = () => {
|
|
8
|
+
const lastScrollPos = window.scrollY;
|
|
9
|
+
if (headerPosition !== 0) {
|
|
10
|
+
if (!isModalMenuOpen && lastScrollPos > headerPosition && showHeader && lastScrollPos > 150) {
|
|
11
|
+
setShowHeader(false);
|
|
12
|
+
setHeaderPosition(lastScrollPos);
|
|
13
|
+
}
|
|
14
|
+
else if (lastScrollPos < headerPosition && !showHeader) {
|
|
15
|
+
setShowHeader(true);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
setHeaderPosition(lastScrollPos);
|
|
19
|
+
};
|
|
20
|
+
const updateHeaderHeight = () => {
|
|
21
|
+
if (refHeader && refHeader.current) {
|
|
22
|
+
const height = refHeader.current.offsetHeight;
|
|
23
|
+
setHeaderHeight(Math.floor(height));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const handleResize = () => {
|
|
27
|
+
updateHeaderHeight();
|
|
28
|
+
};
|
|
29
|
+
updateHeaderHeight();
|
|
30
|
+
targetScroll();
|
|
31
|
+
window.addEventListener('scroll', targetScroll);
|
|
32
|
+
window.addEventListener('scroll', handleResize);
|
|
33
|
+
return () => {
|
|
34
|
+
window.removeEventListener('scroll', targetScroll);
|
|
35
|
+
window.removeEventListener('scroll', handleResize);
|
|
36
|
+
};
|
|
37
|
+
}, [showHeader, headerPosition, isModalMenuOpen, refHeader]);
|
|
38
|
+
return {
|
|
39
|
+
showHeader,
|
|
40
|
+
headerPosition,
|
|
41
|
+
headerHeight,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export const useResizeObserver = (element) => {
|
|
3
|
+
const [width, setWidth] = useState(0);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!element) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
9
|
+
if (element.offsetWidth !== width) {
|
|
10
|
+
setWidth(element.offsetWidth);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
resizeObserver.observe(element);
|
|
14
|
+
return () => resizeObserver.disconnect();
|
|
15
|
+
}, [element, width]);
|
|
16
|
+
return { width };
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloud-ru/uikit-product-site-header",
|
|
3
3
|
"title": "Siteheader",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.9",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css",
|
|
7
7
|
"*.woff",
|
|
@@ -30,16 +30,17 @@
|
|
|
30
30
|
"name": "Akhremenko Grigorii",
|
|
31
31
|
"url": "https://github.com/AGrigorii"
|
|
32
32
|
},
|
|
33
|
+
"contributors": [],
|
|
33
34
|
"license": "Apache-2.0",
|
|
34
35
|
"publishConfig": {
|
|
35
36
|
"access": "public"
|
|
36
37
|
},
|
|
37
38
|
"scripts": {},
|
|
38
39
|
"dependencies": {
|
|
39
|
-
"@cloud-ru/uikit-product-icons": "15.1.
|
|
40
|
-
"@cloud-ru/uikit-product-mobile-modal": "0.9.
|
|
41
|
-
"@cloud-ru/uikit-product-site-layout": "0.2.
|
|
42
|
-
"@cloud-ru/uikit-product-utils": "7.0.
|
|
40
|
+
"@cloud-ru/uikit-product-icons": "15.1.2",
|
|
41
|
+
"@cloud-ru/uikit-product-mobile-modal": "0.9.19",
|
|
42
|
+
"@cloud-ru/uikit-product-site-layout": "0.2.3",
|
|
43
|
+
"@cloud-ru/uikit-product-utils": "7.0.1",
|
|
43
44
|
"@snack-uikit/alert": "0.16.17",
|
|
44
45
|
"@snack-uikit/avatar": "0.8.15",
|
|
45
46
|
"@snack-uikit/button": "0.19.16",
|
|
@@ -51,5 +52,5 @@
|
|
|
51
52
|
"peerDependencies": {
|
|
52
53
|
"@sbercloud/figma-tokens-web": "*"
|
|
53
54
|
},
|
|
54
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "9c11b1e33e716c874534a1c162266c8591f2ed03"
|
|
55
56
|
}
|