@cloud-ru/uikit-product-site-header 0.4.10 → 0.5.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.
Files changed (25) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/components/HeaderItems/HeaderItem.js +2 -2
  3. package/dist/cjs/components/HeaderItems/types.d.ts +6 -0
  4. package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +1 -1
  5. package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.js +2 -2
  6. package/dist/cjs/components/SubHeader/SubHeader.d.ts +1 -1
  7. package/dist/cjs/components/UserDetailsInline/UserDetailsInline.js +1 -1
  8. package/dist/cjs/helperComponents/ButtonBurger/ButtonBurger.js +1 -1
  9. package/dist/cjs/helperComponents/LogoContent/LogoContent.js +1 -1
  10. package/dist/cjs/helperComponents/MobileMenu/MobileMenu.js +1 -1
  11. package/dist/cjs/helperComponents/MoreButton/MoreButton.js +4 -4
  12. package/dist/esm/components/HeaderItems/HeaderItem.js +2 -2
  13. package/dist/esm/components/HeaderItems/types.d.ts +6 -0
  14. package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +1 -1
  15. package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.js +2 -2
  16. package/dist/esm/components/SubHeader/SubHeader.d.ts +1 -1
  17. package/dist/esm/components/UserDetailsInline/UserDetailsInline.js +1 -1
  18. package/dist/esm/helperComponents/ButtonBurger/ButtonBurger.js +1 -1
  19. package/dist/esm/helperComponents/LogoContent/LogoContent.js +1 -1
  20. package/dist/esm/helperComponents/MobileMenu/MobileMenu.js +1 -1
  21. package/dist/esm/helperComponents/MoreButton/MoreButton.js +4 -4
  22. package/package.json +6 -7
  23. package/src/components/HeaderItems/HeaderItem.tsx +11 -2
  24. package/src/components/HeaderItems/types.ts +6 -0
  25. package/src/helperComponents/MoreButton/MoreButton.tsx +9 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 0.5.0 (2025-11-13)
7
+
8
+
9
+ ### Features
10
+
11
+ * **SITE-10174:** update headerItems for a/b test ([fee9eb7](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/fee9eb73144a9c68b8d109ee386fe97752aec9b2))
12
+
13
+
14
+
15
+
16
+
17
+ ## 0.4.11 (2025-11-13)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **PD-3377:** removed contributors ([121640f](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/121640f7b88b20a728a6ad2c39de8841532bb308))
23
+
24
+
25
+
26
+
27
+
6
28
  ## 0.4.10 (2025-11-13)
7
29
 
8
30
  ### Only dependencies have been changed
@@ -68,7 +68,7 @@ function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId }) {
68
68
  if (!linkItems || isMobileTabletView)
69
69
  return null;
70
70
  const isVisibleEmpty = visibleItems.length === 0;
71
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.wrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, styles_module_scss_1.default.hiddenRow), ref: hiddenRowElementRef, children: linkItems.map((linkItem, index) => ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.lastItemContainer, ref: setItemElement(linkItem, index), children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, target: linkItem.target, href: linkItem.href, onClick: linkItem.onClick }) }, linkItem.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, {
71
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.wrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, styles_module_scss_1.default.hiddenRow), ref: hiddenRowElementRef, children: linkItems.map((linkItem, index) => ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.lastItemContainer, linkItem.className), ref: setItemElement(linkItem, index) }, linkItem.dataAttributes, { children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, target: linkItem.target, href: linkItem.href, onClick: linkItem.onClick }) }), linkItem.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, {
72
72
  [styles_module_scss_1.default.linkItemsFirstViewContainer]: isVisibleEmpty,
73
- }), children: [(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.lastItemContainer, children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, href: linkItem.href, onClick: linkItem.onClick, active: activeLinkItemId === linkItem.id }) }, linkItem.id))), hiddenItems.length > 0 && (0, jsx_runtime_1.jsx)(helperComponents_1.MoreButton, { linkItemsArray: hiddenItems, activeItemId: activeLinkItemId })] })] }));
73
+ }), children: [(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.lastItemContainer, linkItem.className) }, linkItem.dataAttributes, { children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, href: linkItem.href, onClick: linkItem.onClick, active: activeLinkItemId === linkItem.id }) }), linkItem.id))), hiddenItems.length > 0 && (0, jsx_runtime_1.jsx)(helperComponents_1.MoreButton, { linkItemsArray: hiddenItems, activeItemId: activeLinkItemId })] })] }));
74
74
  }
@@ -9,4 +9,10 @@ export type LinkItem = {
9
9
  href?: string;
10
10
  /** target для ссылки элемента */
11
11
  target?: string;
12
+ /** className для элемента списка */
13
+ className?: string;
14
+ /** Кастомные data-атрибуты для a/b теста и тд */
15
+ dataAttributes?: {
16
+ [key: string]: string;
17
+ };
12
18
  };
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent, ReactNode } from 'react';
2
- import { WithLayoutType, WithSupportProps } from '@sbercloud/uikit-product-utils';
2
+ import { WithLayoutType, WithSupportProps } from '@cloud-ru/uikit-product-utils';
3
3
  export type AdditionalLogoText = {
4
4
  /** Дополнительный текст Логотипа */
5
5
  text?: string;
@@ -18,8 +18,8 @@ exports.SiteHeaderBasic = SiteHeaderBasic;
18
18
  const jsx_runtime_1 = require("react/jsx-runtime");
19
19
  const classnames_1 = __importDefault(require("classnames"));
20
20
  const react_1 = require("react");
21
- const uikit_product_site_layout_1 = require("@sbercloud/uikit-product-site-layout");
22
- const uikit_product_utils_1 = require("@sbercloud/uikit-product-utils");
21
+ const uikit_product_site_layout_1 = require("@cloud-ru/uikit-product-site-layout");
22
+ const uikit_product_utils_1 = require("@cloud-ru/uikit-product-utils");
23
23
  const helperComponents_1 = require("../../helperComponents");
24
24
  const hooks_1 = require("../../hooks");
25
25
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
@@ -1,4 +1,4 @@
1
- import { WithLayoutType } from '@sbercloud/uikit-product-utils';
1
+ import { WithLayoutType } from '@cloud-ru/uikit-product-utils';
2
2
  type BannerInfo = {
3
3
  /** Цвет фона SubHeader */
4
4
  color: 'yellow' | 'blue' | 'green';
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.UserDetailsInline = UserDetailsInline;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const classnames_1 = __importDefault(require("classnames"));
9
- const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
9
+ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
10
10
  const button_1 = require("@snack-uikit/button");
11
11
  const divider_1 = require("@snack-uikit/divider");
12
12
  const UserInfo_1 = require("../../helperComponents/UserInfo");
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ButtonBurger = ButtonBurger;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
- const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
8
+ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
9
9
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
10
10
  function ButtonBurger({ mobileMenuOpen, onClick }) {
11
11
  return ((0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.buttonBurger, onClick: onClick, children: mobileMenuOpen ? (0, jsx_runtime_1.jsx)(uikit_product_icons_1.CloseSVG, {}) : (0, jsx_runtime_1.jsx)(uikit_product_icons_1.BurgerSVG, {}) }));
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.LogoContent = LogoContent;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
- const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
8
+ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
9
9
  const typography_1 = require("@snack-uikit/typography");
10
10
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
11
11
  function LogoContent({ additionalLogoText, isMobile, logo }) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MobileMenu = MobileMenu;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
- const uikit_product_mobile_modal_1 = require("@sbercloud/uikit-product-mobile-modal");
8
+ const uikit_product_mobile_modal_1 = require("@cloud-ru/uikit-product-mobile-modal");
9
9
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
10
10
  function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }) {
11
11
  return ((0, jsx_runtime_1.jsxs)(uikit_product_mobile_modal_1.MobileModalCustom, { open: mobileMenuOpen, onClose: onClickForCloseMobileMenu, className: styles_module_scss_1.default.mobileMenu, children: [(0, jsx_runtime_1.jsx)(uikit_product_mobile_modal_1.MobileModalCustom.Header, { title: '\u041C\u0435\u043D\u044E', align: 'center' }), (0, jsx_runtime_1.jsx)(uikit_product_mobile_modal_1.MobileModalCustom.Body, { content: mobileMenuContent }), mobileConsultationButton && (0, jsx_runtime_1.jsx)(uikit_product_mobile_modal_1.MobileModalCustom.Footer, { actions: mobileConsultationButton })] }));
@@ -7,7 +7,7 @@ exports.MoreButton = MoreButton;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const classnames_1 = __importDefault(require("classnames"));
9
9
  const react_1 = require("react");
10
- const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
10
+ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
11
11
  const dropdown_1 = require("@snack-uikit/dropdown");
12
12
  const LinkItemHeader_1 = require("../LinkItemHeader");
13
13
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
@@ -19,11 +19,11 @@ function MoreButton({ linkItemsArray, activeItemId }) {
19
19
  return ((0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { placement: 'bottom-start', open: open, outsideClick: () => {
20
20
  onClickOpen();
21
21
  return false;
22
- }, content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.tagRowDropListScroll, children: linkItemsArray.map(item => ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.rowLinkMore, {
22
+ }, content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.tagRowDropListScroll, children: linkItemsArray.map(item => ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.rowLinkMore, {
23
23
  [styles_module_scss_1.default.hovered]: !item.href,
24
24
  [styles_module_scss_1.default.active]: item.id === activeItemId && !item.href,
25
- }), children: (0, jsx_runtime_1.jsx)(LinkItemHeader_1.LinkItemHeader, { label: item.label, onClick: () => {
25
+ }, item.className) }, item.dataAttributes, { children: (0, jsx_runtime_1.jsx)(LinkItemHeader_1.LinkItemHeader, { label: item.label, onClick: () => {
26
26
  item.onClick && item.onClick();
27
27
  onClickOpen();
28
- }, href: item.href, withoutHover: true }) }, item.id))) }), children: (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.button, onClick: onClickOpen, children: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.MoreSVG, {}) }) }));
28
+ }, href: item.href, withoutHover: true }) }), item.id))) }), children: (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.button, onClick: onClickOpen, children: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.MoreSVG, {}) }) }));
29
29
  }
@@ -62,7 +62,7 @@ export function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId })
62
62
  if (!linkItems || isMobileTabletView)
63
63
  return null;
64
64
  const isVisibleEmpty = visibleItems.length === 0;
65
- return (_jsxs("div", { className: styles.wrapper, children: [_jsx("div", { className: cn(styles.linkItemsContainer, styles.hiddenRow), ref: hiddenRowElementRef, children: linkItems.map((linkItem, index) => (_jsx("div", { className: styles.lastItemContainer, ref: setItemElement(linkItem, index), children: _jsx(LinkItemHeader, { label: linkItem.label, target: linkItem.target, href: linkItem.href, onClick: linkItem.onClick }) }, linkItem.id))) }), _jsxs("div", { className: cn(styles.linkItemsContainer, {
65
+ return (_jsxs("div", { className: styles.wrapper, children: [_jsx("div", { className: cn(styles.linkItemsContainer, styles.hiddenRow), ref: hiddenRowElementRef, children: linkItems.map((linkItem, index) => (_jsx("div", Object.assign({ className: cn(styles.lastItemContainer, linkItem.className), ref: setItemElement(linkItem, index) }, linkItem.dataAttributes, { children: _jsx(LinkItemHeader, { label: linkItem.label, target: linkItem.target, href: linkItem.href, onClick: linkItem.onClick }) }), linkItem.id))) }), _jsxs("div", { className: cn(styles.linkItemsContainer, {
66
66
  [styles.linkItemsFirstViewContainer]: isVisibleEmpty,
67
- }), children: [(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => (_jsx("div", { className: styles.lastItemContainer, children: _jsx(LinkItemHeader, { label: linkItem.label, href: linkItem.href, onClick: linkItem.onClick, active: activeLinkItemId === linkItem.id }) }, linkItem.id))), hiddenItems.length > 0 && _jsx(MoreButton, { linkItemsArray: hiddenItems, activeItemId: activeLinkItemId })] })] }));
67
+ }), children: [(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => (_jsx("div", Object.assign({ className: cn(styles.lastItemContainer, linkItem.className) }, linkItem.dataAttributes, { children: _jsx(LinkItemHeader, { label: linkItem.label, href: linkItem.href, onClick: linkItem.onClick, active: activeLinkItemId === linkItem.id }) }), linkItem.id))), hiddenItems.length > 0 && _jsx(MoreButton, { linkItemsArray: hiddenItems, activeItemId: activeLinkItemId })] })] }));
68
68
  }
@@ -9,4 +9,10 @@ export type LinkItem = {
9
9
  href?: string;
10
10
  /** target для ссылки элемента */
11
11
  target?: string;
12
+ /** className для элемента списка */
13
+ className?: string;
14
+ /** Кастомные data-атрибуты для a/b теста и тд */
15
+ dataAttributes?: {
16
+ [key: string]: string;
17
+ };
12
18
  };
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent, ReactNode } from 'react';
2
- import { WithLayoutType, WithSupportProps } from '@sbercloud/uikit-product-utils';
2
+ import { WithLayoutType, WithSupportProps } from '@cloud-ru/uikit-product-utils';
3
3
  export type AdditionalLogoText = {
4
4
  /** Дополнительный текст Логотипа */
5
5
  text?: string;
@@ -12,8 +12,8 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import cn from 'classnames';
14
14
  import { useRef } from 'react';
15
- import { Layout } from '@sbercloud/uikit-product-site-layout';
16
- import { extractSupportProps } from '@sbercloud/uikit-product-utils';
15
+ import { Layout } from '@cloud-ru/uikit-product-site-layout';
16
+ import { extractSupportProps } from '@cloud-ru/uikit-product-utils';
17
17
  import { ButtonBurger, LogoContent, MobileMenu } from '../../helperComponents';
18
18
  import { useHeaderPosition } from '../../hooks';
19
19
  import styles from './styles.module.css';
@@ -1,4 +1,4 @@
1
- import { WithLayoutType } from '@sbercloud/uikit-product-utils';
1
+ import { WithLayoutType } from '@cloud-ru/uikit-product-utils';
2
2
  type BannerInfo = {
3
3
  /** Цвет фона SubHeader */
4
4
  color: 'yellow' | 'blue' | 'green';
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import cn from 'classnames';
3
- import { ExitSVG } from '@sbercloud/uikit-product-icons';
3
+ import { ExitSVG } from '@cloud-ru/uikit-product-icons';
4
4
  import { ButtonFunction } from '@snack-uikit/button';
5
5
  import { Divider } from '@snack-uikit/divider';
6
6
  import { UserInfo } from '../../helperComponents/UserInfo';
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { BurgerSVG, CloseSVG } from '@sbercloud/uikit-product-icons';
2
+ import { BurgerSVG, CloseSVG } from '@cloud-ru/uikit-product-icons';
3
3
  import styles from './styles.module.css';
4
4
  export function ButtonBurger({ mobileMenuOpen, onClick }) {
5
5
  return (_jsx("button", { className: styles.buttonBurger, onClick: onClick, children: mobileMenuOpen ? _jsx(CloseSVG, {}) : _jsx(BurgerSVG, {}) }));
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CloudFullLogoSVG } from '@sbercloud/uikit-product-icons';
2
+ import { CloudFullLogoSVG } from '@cloud-ru/uikit-product-icons';
3
3
  import { Typography } from '@snack-uikit/typography';
4
4
  import styles from './styles.module.css';
5
5
  export function LogoContent({ additionalLogoText, isMobile, logo }) {
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { MobileModalCustom } from '@sbercloud/uikit-product-mobile-modal';
2
+ import { MobileModalCustom } from '@cloud-ru/uikit-product-mobile-modal';
3
3
  import styles from './styles.module.css';
4
4
  export function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }) {
5
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 })] }));
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import cn from 'classnames';
3
3
  import { useState } from 'react';
4
- import { MoreSVG } from '@sbercloud/uikit-product-icons';
4
+ import { MoreSVG } from '@cloud-ru/uikit-product-icons';
5
5
  import { Dropdown } from '@snack-uikit/dropdown';
6
6
  import { LinkItemHeader } from '../LinkItemHeader';
7
7
  import styles from './styles.module.css';
@@ -13,11 +13,11 @@ export function MoreButton({ linkItemsArray, activeItemId }) {
13
13
  return (_jsx(Dropdown, { placement: 'bottom-start', open: open, outsideClick: () => {
14
14
  onClickOpen();
15
15
  return false;
16
- }, content: _jsx("div", { className: styles.tagRowDropListScroll, children: linkItemsArray.map(item => (_jsx("div", { className: cn(styles.rowLinkMore, {
16
+ }, content: _jsx("div", { className: styles.tagRowDropListScroll, children: linkItemsArray.map(item => (_jsx("div", Object.assign({ className: cn(styles.rowLinkMore, {
17
17
  [styles.hovered]: !item.href,
18
18
  [styles.active]: item.id === activeItemId && !item.href,
19
- }), children: _jsx(LinkItemHeader, { label: item.label, onClick: () => {
19
+ }, item.className) }, item.dataAttributes, { children: _jsx(LinkItemHeader, { label: item.label, onClick: () => {
20
20
  item.onClick && item.onClick();
21
21
  onClickOpen();
22
- }, href: item.href, withoutHover: true }) }, item.id))) }), children: _jsx("button", { className: styles.button, onClick: onClickOpen, children: _jsx(MoreSVG, {}) }) }));
22
+ }, href: item.href, withoutHover: true }) }), item.id))) }), children: _jsx("button", { className: styles.button, onClick: onClickOpen, children: _jsx(MoreSVG, {}) }) }));
23
23
  }
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.10",
4
+ "version": "0.5.0",
5
5
  "sideEffects": [
6
6
  "*.css",
7
7
  "*.woff",
@@ -30,17 +30,16 @@
30
30
  "name": "Akhremenko Grigorii",
31
31
  "url": "https://github.com/AGrigorii"
32
32
  },
33
- "contributors": [],
34
33
  "license": "Apache-2.0",
35
34
  "publishConfig": {
36
35
  "access": "public"
37
36
  },
38
37
  "scripts": {},
39
38
  "dependencies": {
40
- "@cloud-ru/uikit-product-icons": "15.1.3",
41
- "@cloud-ru/uikit-product-mobile-modal": "0.9.20",
42
- "@cloud-ru/uikit-product-site-layout": "0.2.4",
43
- "@cloud-ru/uikit-product-utils": "7.0.2",
39
+ "@cloud-ru/uikit-product-icons": "15.1.4",
40
+ "@cloud-ru/uikit-product-mobile-modal": "0.9.21",
41
+ "@cloud-ru/uikit-product-site-layout": "0.2.5",
42
+ "@cloud-ru/uikit-product-utils": "7.0.3",
44
43
  "@snack-uikit/alert": "0.16.17",
45
44
  "@snack-uikit/avatar": "0.8.15",
46
45
  "@snack-uikit/button": "0.19.16",
@@ -52,5 +51,5 @@
52
51
  "peerDependencies": {
53
52
  "@sbercloud/figma-tokens-web": "*"
54
53
  },
55
- "gitHead": "bf479ecf7238ef20b78f20acaef439efa535d1a1"
54
+ "gitHead": "bf902e38f3b6e267402a675b7640b5a62f1c4f71"
56
55
  }
@@ -90,7 +90,12 @@ export function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId }:
90
90
  <div className={styles.wrapper}>
91
91
  <div className={cn(styles.linkItemsContainer, styles.hiddenRow)} ref={hiddenRowElementRef}>
92
92
  {linkItems.map((linkItem, index) => (
93
- <div key={linkItem.id} className={styles.lastItemContainer} ref={setItemElement(linkItem, index)}>
93
+ <div
94
+ key={linkItem.id}
95
+ className={cn(styles.lastItemContainer, linkItem.className)}
96
+ ref={setItemElement(linkItem, index)}
97
+ {...linkItem.dataAttributes}
98
+ >
94
99
  <LinkItemHeader
95
100
  label={linkItem.label}
96
101
  target={linkItem.target}
@@ -107,7 +112,11 @@ export function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId }:
107
112
  >
108
113
  {/*Добавлено для сайта, так как используется next и приходит html без расчета js*/}
109
114
  {(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => (
110
- <div key={linkItem.id} className={styles.lastItemContainer}>
115
+ <div
116
+ key={linkItem.id}
117
+ className={cn(styles.lastItemContainer, linkItem.className)}
118
+ {...linkItem.dataAttributes}
119
+ >
111
120
  <LinkItemHeader
112
121
  label={linkItem.label}
113
122
  href={linkItem.href}
@@ -9,4 +9,10 @@ export type LinkItem = {
9
9
  href?: string;
10
10
  /** target для ссылки элемента */
11
11
  target?: string;
12
+ /** className для элемента списка */
13
+ className?: string;
14
+ /** Кастомные data-атрибуты для a/b теста и тд */
15
+ dataAttributes?: {
16
+ [key: string]: string;
17
+ };
12
18
  };
@@ -32,10 +32,15 @@ export function MoreButton({ linkItemsArray, activeItemId }: MoreButtonProps) {
32
32
  {linkItemsArray.map(item => (
33
33
  <div
34
34
  key={item.id}
35
- className={cn(styles.rowLinkMore, {
36
- [styles.hovered]: !item.href,
37
- [styles.active]: item.id === activeItemId && !item.href,
38
- })}
35
+ className={cn(
36
+ styles.rowLinkMore,
37
+ {
38
+ [styles.hovered]: !item.href,
39
+ [styles.active]: item.id === activeItemId && !item.href,
40
+ },
41
+ item.className,
42
+ )}
43
+ {...item.dataAttributes}
39
44
  >
40
45
  <LinkItemHeader
41
46
  label={item.label}