@consta/header 1.0.1 → 1.2.1
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/BannerBar/index.d.ts +1 -0
- package/BannerBar/index.js +1 -0
- package/GlobalMenu/index.d.ts +1 -0
- package/GlobalMenu/index.js +1 -0
- package/MegaMenu/index.d.ts +1 -0
- package/MegaMenu/index.js +1 -0
- package/NavBar/index.d.ts +1 -0
- package/NavBar/index.js +1 -0
- package/README.md +15 -16
- package/__internal__/src/components/Badges/Badges.js.map +1 -1
- package/__internal__/src/components/Badges/helpers.js.map +1 -1
- package/__internal__/src/components/Badges/types.d.ts +6 -6
- package/__internal__/src/components/BannerBar/BannerBar.css +1 -0
- package/__internal__/src/components/BannerBar/BannerBar.d.ts +3 -0
- package/__internal__/src/components/BannerBar/BannerBar.js +2 -0
- package/__internal__/src/components/BannerBar/BannerBar.js.map +1 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/BannerBarItem.css +1 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/BannerBarItem.d.ts +3 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/BannerBarItem.js +2 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/BannerBarItem.js.map +1 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/index.d.ts +1 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/index.js +2 -0
- package/__internal__/src/components/BannerBar/BannerBarItem/index.js.map +1 -0
- package/__internal__/src/components/BannerBar/helpers.d.ts +274 -0
- package/__internal__/src/components/BannerBar/helpers.js +2 -0
- package/__internal__/src/components/BannerBar/helpers.js.map +1 -0
- package/__internal__/src/components/BannerBar/index.d.ts +3 -0
- package/__internal__/src/components/BannerBar/index.js +2 -0
- package/__internal__/src/components/BannerBar/index.js.map +1 -0
- package/__internal__/src/components/BannerBar/types.d.ts +42 -0
- package/__internal__/src/components/BannerBar/types.js +2 -0
- package/__internal__/src/components/BannerBar/types.js.map +1 -0
- package/__internal__/src/components/ButtonMenu/ButtonMenu.js.map +1 -1
- package/__internal__/src/components/ButtonMenu/helpers.d.ts +2 -2
- package/__internal__/src/components/ButtonMenu/helpers.js.map +1 -1
- package/__internal__/src/components/ButtonMenu/types.d.ts +9 -9
- package/__internal__/src/components/GlobalMenu/GlobalMenu.css +1 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenu.d.ts +3 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenu.js +2 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenu.js.map +1 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/GlobalMenuGroup.css +1 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/GlobalMenuGroup.d.ts +3 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/GlobalMenuGroup.js +2 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/GlobalMenuGroup.js.map +1 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/index.d.ts +1 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/index.js +2 -0
- package/__internal__/src/components/GlobalMenu/GlobalMenuGroup/index.js.map +1 -0
- package/__internal__/src/components/GlobalMenu/helper.d.ts +281 -0
- package/__internal__/src/components/GlobalMenu/helper.js +2 -0
- package/__internal__/src/components/GlobalMenu/helper.js.map +1 -0
- package/__internal__/src/components/GlobalMenu/index.d.ts +2 -0
- package/__internal__/src/components/GlobalMenu/index.js +2 -0
- package/__internal__/src/components/GlobalMenu/index.js.map +1 -0
- package/__internal__/src/components/GlobalMenu/types.d.ts +75 -0
- package/__internal__/src/components/GlobalMenu/types.js +2 -0
- package/__internal__/src/components/GlobalMenu/types.js.map +1 -0
- package/__internal__/src/components/Header/Header.js.map +1 -1
- package/__internal__/src/components/Header/HeaderLogin/HeaderLogin.d.ts +2 -2
- package/__internal__/src/components/Header/HeaderLogin/HeaderLogin.js.map +1 -1
- package/__internal__/src/components/Header/HeaderLogo/HeaderLogo.d.ts +2 -2
- package/__internal__/src/components/Header/HeaderLogo/HeaderLogo.js.map +1 -1
- package/__internal__/src/components/Header/HeaderSearch/HeaderSearch.d.ts +1 -1
- package/__internal__/src/components/Header/HeaderSearch/HeaderSearch.js.map +1 -1
- package/__internal__/src/components/Header/helpers.d.ts +1 -1
- package/__internal__/src/components/Header/helpers.js.map +1 -1
- package/__internal__/src/components/Header/types.d.ts +12 -12
- package/__internal__/src/components/Languages/Languages.js.map +1 -1
- package/__internal__/src/components/Languages/helpers.d.ts +1 -1
- package/__internal__/src/components/Languages/helpers.js.map +1 -1
- package/__internal__/src/components/Languages/types.d.ts +3 -3
- package/__internal__/src/components/Layout/Layout.d.ts +1 -1
- package/__internal__/src/components/Layout/Layout.js.map +1 -1
- package/__internal__/src/components/Layout/LayoutRow/LayoutRow.d.ts +1 -1
- package/__internal__/src/components/Layout/LayoutRow/LayoutRow.js.map +1 -1
- package/__internal__/src/components/Layout/helpers.js.map +1 -1
- package/__internal__/src/components/Layout/types.d.ts +3 -3
- package/__internal__/src/components/MegaMenu/MegaMenu.css +1 -0
- package/__internal__/src/components/MegaMenu/MegaMenu.d.ts +4 -0
- package/__internal__/src/components/MegaMenu/MegaMenu.js +2 -0
- package/__internal__/src/components/MegaMenu/MegaMenu.js.map +1 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/MegaMenuBox.css +1 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/MegaMenuBox.d.ts +3 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/MegaMenuBox.js +2 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/MegaMenuBox.js.map +1 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/index.d.ts +2 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/index.js +2 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/index.js.map +1 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/types.d.ts +10 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/types.js +2 -0
- package/__internal__/src/components/MegaMenu/MegaMenuBox/types.js.map +1 -0
- package/__internal__/src/components/MegaMenu/helper.d.ts +301 -0
- package/__internal__/src/components/MegaMenu/helper.js +2 -0
- package/__internal__/src/components/MegaMenu/helper.js.map +1 -0
- package/__internal__/src/components/MegaMenu/index.d.ts +3 -0
- package/__internal__/src/components/MegaMenu/index.js +2 -0
- package/__internal__/src/components/MegaMenu/index.js.map +1 -0
- package/__internal__/src/components/MegaMenu/types.d.ts +65 -0
- package/__internal__/src/components/MegaMenu/types.js +2 -0
- package/__internal__/src/components/MegaMenu/types.js.map +1 -0
- package/__internal__/src/components/Menu/Menu.js.map +1 -1
- package/__internal__/src/components/Menu/helpers.d.ts +1 -1
- package/__internal__/src/components/Menu/helpers.js.map +1 -1
- package/__internal__/src/components/Menu/types.d.ts +10 -10
- package/__internal__/src/components/MobileMenu/MobileMenu.js.map +1 -1
- package/__internal__/src/components/MobileMenu/types.d.ts +2 -2
- package/__internal__/src/components/NavBar/NavBar.css +1 -0
- package/__internal__/src/components/NavBar/NavBar.d.ts +3 -0
- package/__internal__/src/components/NavBar/NavBar.js +2 -0
- package/__internal__/src/components/NavBar/NavBar.js.map +1 -0
- package/__internal__/src/components/NavBar/helper.d.ts +31 -0
- package/__internal__/src/components/NavBar/helper.js +2 -0
- package/__internal__/src/components/NavBar/helper.js.map +1 -0
- package/__internal__/src/components/NavBar/index.d.ts +1 -0
- package/__internal__/src/components/NavBar/index.js +2 -0
- package/__internal__/src/components/NavBar/index.js.map +1 -0
- package/__internal__/src/components/NavBar/types.d.ts +48 -0
- package/__internal__/src/components/NavBar/types.js +2 -0
- package/__internal__/src/components/NavBar/types.js.map +1 -0
- package/__internal__/src/components/NotificationCard/NotificationCard.d.ts +1 -1
- package/__internal__/src/components/NotificationCard/NotificationCard.js.map +1 -1
- package/__internal__/src/components/NotificationCard/helpers.js.map +1 -1
- package/__internal__/src/components/NotificationCard/types.d.ts +3 -3
- package/__internal__/src/components/Notifications/Notifications.js.map +1 -1
- package/__internal__/src/components/Notifications/types.d.ts +2 -2
- package/__internal__/src/components/NotificationsActions/NotificationsActions.js.map +1 -1
- package/__internal__/src/components/NotificationsActions/helpers.js.map +1 -1
- package/__internal__/src/components/NotificationsActions/types.d.ts +7 -7
- package/__internal__/src/components/NotificationsList/NotificationsList.js.map +1 -1
- package/__internal__/src/components/NotificationsList/helpers.d.ts +2 -2
- package/__internal__/src/components/NotificationsList/helpers.js.map +1 -1
- package/__internal__/src/components/NotificationsList/types.d.ts +23 -23
- package/__internal__/src/components/SelectMenu/SelectMenu.js.map +1 -1
- package/__internal__/src/components/SelectMenu/helpers.d.ts +1 -1
- package/__internal__/src/components/SelectMenu/helpers.js.map +1 -1
- package/__internal__/src/components/SelectMenu/types.d.ts +9 -9
- package/__internal__/src/components/Sidebar/Sidebar.d.ts +1 -1
- package/__internal__/src/components/Sidebar/Sidebar.js.map +1 -1
- package/__internal__/src/components/TileMenu/TileMenu.js.map +1 -1
- package/__internal__/src/components/TileMenu/TileMenuItem/TileMenuItem.d.ts +2 -2
- package/__internal__/src/components/TileMenu/TileMenuItem/TileMenuItem.js.map +1 -1
- package/__internal__/src/components/TileMenu/TileMenuList/TileMenuList.js.map +1 -1
- package/__internal__/src/components/TileMenu/TileMenuList/types.d.ts +8 -8
- package/__internal__/src/components/TileMenu/helpers.d.ts +3 -0
- package/__internal__/src/components/TileMenu/helpers.js.map +1 -1
- package/__internal__/src/components/TileMenu/types.d.ts +14 -14
- package/__internal__/src/components/TileMenu/types.js.map +1 -1
- package/__internal__/src/components/VerticalMenu/VerticalMenu.js.map +1 -1
- package/__internal__/src/components/VerticalMenu/VerticalMenuItem/VerticalMenuItem.js.map +1 -1
- package/__internal__/src/components/VerticalMenu/VerticalMenuLevel/VerticalMenuLevel.js.map +1 -1
- package/__internal__/src/components/VerticalMenu/helpers.d.ts +1 -1
- package/__internal__/src/components/VerticalMenu/helpers.js.map +1 -1
- package/__internal__/src/components/VerticalMenu/types.d.ts +16 -16
- package/__internal__/src/docs/start/start.stand.js.map +1 -1
- package/__internal__/src/helpers/getItemClick.d.ts +2 -2
- package/__internal__/src/helpers/getItemClick.js.map +1 -1
- package/__internal__/src/utils/bem.js.map +1 -1
- package/__internal__/src/utils/types/PropsWithHTMLAttributes.d.ts +2 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutRow.js","names":["React","cn","LayoutRowIsObject","cnLayoutRow","LayoutRow","props","className","content","height","left","center","right","position"],"sources":["../../../../../../src/components/Layout/LayoutRow/LayoutRow.tsx"],"sourcesContent":["import './LayoutRow.css';\n\nimport React from 'react';\n\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { LayoutRowIsObject } from '../helpers';\nimport { LayoutRow as LayoutRowType, LayoutSlotHeight } from '../types';\n\nconst cnLayoutRow = cn('LayoutRow');\n\ntype LayoutRowProps = PropsWithHTMLAttributes<\n {\n content?: React.ReactNode | LayoutRowType;\n children?: never;\n height?: LayoutSlotHeight;\n },\n HTMLDivElement\n>;\n\nexport const LayoutRow: React.FC<LayoutRowProps> = (props) => {\n const { className, content, height = 'm' } = props;\n if (!content) {\n return null;\n }\n if (LayoutRowIsObject(content)) {\n const { left, center, right } = content;\n return (\n <div className={cnLayoutRow({ height }, [className])}>\n {left && (\n <div className={cnLayoutRow('Side', { position: 'left' })}>\n {left}\n </div>\n )}\n {center && (\n <div className={cnLayoutRow('Side', { position: 'center' })}>\n {center}\n </div>\n )}\n {right && (\n <div className={cnLayoutRow('Side', { position: 'right' })}>\n {right}\n </div>\n )}\n </div>\n );\n }\n return (\n <div className={cnLayoutRow({ height }, [className])}>\n <div className={cnLayoutRow('Side', { position: 'left' })}>{content}</div>\n </div>\n );\n};\n"],"mappings":"AAAA,wBAEA,MAAOA,
|
|
1
|
+
{"version":3,"file":"LayoutRow.js","names":["React","cn","LayoutRowIsObject","cnLayoutRow","LayoutRow","props","className","content","height","left","center","right","position"],"sources":["../../../../../../src/components/Layout/LayoutRow/LayoutRow.tsx"],"sourcesContent":["import './LayoutRow.css';\n\nimport React from 'react';\n\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { LayoutRowIsObject } from '../helpers';\nimport { LayoutRow as LayoutRowType, LayoutSlotHeight } from '../types';\n\nconst cnLayoutRow = cn('LayoutRow');\n\ntype LayoutRowProps = PropsWithHTMLAttributes<\n {\n content?: React.ReactNode | LayoutRowType;\n children?: never;\n height?: LayoutSlotHeight;\n },\n HTMLDivElement\n>;\n\nexport const LayoutRow: React.FC<LayoutRowProps> = (props) => {\n const { className, content, height = 'm' } = props;\n if (!content) {\n return null;\n }\n if (LayoutRowIsObject(content)) {\n const { left, center, right } = content;\n return (\n <div className={cnLayoutRow({ height }, [className])}>\n {left && (\n <div className={cnLayoutRow('Side', { position: 'left' })}>\n {left}\n </div>\n )}\n {center && (\n <div className={cnLayoutRow('Side', { position: 'center' })}>\n {center}\n </div>\n )}\n {right && (\n <div className={cnLayoutRow('Side', { position: 'right' })}>\n {right}\n </div>\n )}\n </div>\n );\n }\n return (\n <div className={cnLayoutRow({ height }, [className])}>\n <div className={cnLayoutRow('Side', { position: 'left' })}>{content}</div>\n </div>\n );\n};\n"],"mappings":"AAAA,wBAEA,MAAOA,MAAK,KAAM,OAAO,CAEzB,OAASC,EAAE,0BAGX,OAASC,iBAAiB,kBAG1B,KAAMC,YAAW,CAAGF,EAAE,CAAC,WAAW,CAAC,CAWnC,MAAO,MAAMG,UAAmC,CAAIC,CAAK,EAAK,CAC5D,KAAM,CAAEC,SAAS,CAATA,CAAS,CAAEC,OAAO,CAAPA,CAAO,CAAEC,MAAM,CAANA,CAAM,CAAG,GAAI,CAAC,CAAGH,CAAK,CAClD,GAAI,CAACE,CAAO,CACV,MAAO,KAAI,CAEb,GAAIL,iBAAiB,CAACK,CAAO,CAAC,CAAE,CAC9B,KAAM,CAAEE,IAAI,CAAJA,CAAI,CAAEC,MAAM,CAANA,CAAM,CAAEC,KAAK,CAALA,CAAM,CAAC,CAAGJ,CAAO,CACvC,MACE,4BAAK,SAAS,CAAEJ,WAAW,CAAC,CAAEK,MAAM,CAANA,CAAO,CAAC,CAAE,CAACF,CAAS,CAAC,CAAE,EAClDG,CAAI,EACH,2BAAK,SAAS,CAAEN,WAAW,CAAC,MAAM,CAAE,CAAES,QAAQ,CAAE,MAAO,CAAC,CAAE,EACvDH,CAAI,CAER,CACAC,CAAM,EACL,2BAAK,SAAS,CAAEP,WAAW,CAAC,MAAM,CAAE,CAAES,QAAQ,CAAE,QAAS,CAAC,CAAE,EACzDF,CAAM,CAEV,CACAC,CAAK,EACJ,2BAAK,SAAS,CAAER,WAAW,CAAC,MAAM,CAAE,CAAES,QAAQ,CAAE,OAAQ,CAAC,CAAE,EACxDD,CAAK,CAET,CAGP,CACA,MACE,4BAAK,SAAS,CAAER,WAAW,CAAC,CAAEK,MAAM,CAANA,CAAO,CAAC,CAAE,CAACF,CAAS,CAAC,CAAE,EACnD,2BAAK,SAAS,CAAEH,WAAW,CAAC,MAAM,CAAE,CAAES,QAAQ,CAAE,MAAO,CAAC,CAAE,EAAEL,CAAO,CAAO,CAGhF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["hasProperty","Object","prototype","hasOwnProperty","LayoutRowIsObject","content","call"],"sources":["../../../../../src/components/Layout/helpers.tsx"],"sourcesContent":["import { LayoutRow } from './types';\n\nconst hasProperty = Object.prototype.hasOwnProperty;\n\nexport const LayoutRowIsObject = (\n content: React.ReactNode | LayoutRow,\n): content is LayoutRow => {\n if (\n content &&\n typeof content === 'object' &&\n (hasProperty.call(content, 'left') ||\n hasProperty.call(content, 'right') ||\n hasProperty.call(content, 'center'))\n ) {\n return true;\n }\n return false;\n};\n"],"mappings":"AAEA,KAAMA,YAAW,CAAGC,MAAM,CAACC,
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["hasProperty","Object","prototype","hasOwnProperty","LayoutRowIsObject","content","call"],"sources":["../../../../../src/components/Layout/helpers.tsx"],"sourcesContent":["import { LayoutRow } from './types';\n\nconst hasProperty = Object.prototype.hasOwnProperty;\n\nexport const LayoutRowIsObject = (\n content: React.ReactNode | LayoutRow,\n): content is LayoutRow => {\n if (\n content &&\n typeof content === 'object' &&\n (hasProperty.call(content, 'left') ||\n hasProperty.call(content, 'right') ||\n hasProperty.call(content, 'center'))\n ) {\n return true;\n }\n return false;\n};\n"],"mappings":"AAEA,KAAMA,YAAW,CAAGC,MAAM,CAACC,SAAS,CAACC,cAAc,CAEnD,MAAO,MAAMC,kBAAiB,CAC5BC,CAAoC,KAGlCA,CAAO,EACY,QAAQ,EAA3B,MAAOA,EAAoB,GAC1BL,WAAW,CAACM,IAAI,CAACD,CAAO,CAAE,MAAM,CAAC,EAChCL,WAAW,CAACM,IAAI,CAACD,CAAO,CAAE,OAAO,CAAC,EAClCL,WAAW,CAACM,IAAI,CAACD,CAAO,CAAE,QAAQ,CAAC,CAAC,CAKzC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PropsWithHTMLAttributesAndRef } from "../../utils/types/PropsWithHTMLAttributes";
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type LayoutSlotHeight = 'm' | 's';
|
|
4
|
+
export type LayoutRow = {
|
|
5
5
|
left: React.ReactNode;
|
|
6
6
|
right: React.ReactNode;
|
|
7
7
|
center: React.ReactNode;
|
|
8
8
|
height?: LayoutSlotHeight;
|
|
9
9
|
};
|
|
10
|
-
export
|
|
10
|
+
export type LayoutProps = PropsWithHTMLAttributesAndRef<{
|
|
11
11
|
rowCenter?: React.ReactNode | LayoutRow;
|
|
12
12
|
rowTop?: React.ReactNode | Omit<LayoutRow, 'height'>;
|
|
13
13
|
rowBottom?: React.ReactNode | Omit<LayoutRow, 'height'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.che--MegaMenu{display:grid;grid-template-columns:var(--mega-menu-grid-columns);width:100%}.che--MegaMenu_withNavBar{--mega-menu-grid-columns:275px auto}.che--MegaMenu_bannerPosition_right{--mega-menu-wrapper-grid-columns:100%}.che--MegaMenu_bannerPosition_right.che--MegaMenu_withBannersBar{--mega-menu-wrapper-grid-columns:auto 344px}.che--MegaMenu_bannerPosition_bottom{--mega-menu-wrapper-grid-columns:100%}.che--MegaMenu-Wrapper{background:var(--color-bg-default);display:grid;grid-template-columns:var(--mega-menu-wrapper-grid-columns);width:100%}.che--MegaMenu-NavBar.che--NavBar{height:auto;max-height:var(--mega-menu-max-height);max-width:275px;min-width:275px}.che--MegaMenu-GlobalMenu{height:max-content;max-width:100%;width:100%}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";const _excluded=["items","menuHideButtonText","menuMaxElements","menuShowButtonText","menuTitle","onItemClick","getItemAs","getItemKey","getItemAttributes","getItemSubMenu","getItemIconLeft","getItemLabel","getItemOnClick","banners","bannerPosition","onBannerClick","getBannerAs","getBannerAttributes","getBannerDescription","getBannerImage","getBannerLabel","getBannerOnClick","className"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./MegaMenu.css";import{IconArrowRight}from"@consta/uikit/IconArrowRight";import React,{useEffect,useMemo,useState}from"react";import{cn}from"../../utils/bem";import{BannerBar}from"../BannerBar";import{GlobalMenu}from"../GlobalMenu";import{NavBar}from"../NavBar";import{getItemsDepth,separateItemsByDepth,withDefaultGetters}from"./helper";const cnMegaMenu=cn("MegaMenu");export const MegaMenu=a=>{const b=withDefaultGetters(a),{items:c,menuHideButtonText:w="\u0421\u043A\u0440\u044B\u0442\u044C",menuMaxElements:d,menuShowButtonText:x="\u0415\u0449\u0451",menuTitle:e,onItemClick:f,getItemAs:g,getItemKey:h,getItemAttributes:i,getItemSubMenu:j,getItemIconLeft:k,getItemLabel:l,getItemOnClick:m,banners:n,bannerPosition:y="right",onBannerClick:o,getBannerAs:p,getBannerAttributes:q,getBannerDescription:r,getBannerImage:s,getBannerLabel:t,getBannerOnClick:u,className:v}=b,z=_objectWithoutProperties(b,_excluded),[A,B]=useState(),C=a=>!!A&&h(A)===h(a),D=useMemo(()=>getItemsDepth(c,j),[c]),[E,F,G]=useMemo(()=>separateItemsByDepth({items:c,getItemKey:h,getItemSubMenu:j,getItemActive:C,depth:D}),[c,A]),{navItems:H,items:I,groups:J}=useMemo(()=>({navItems:2>D||2<D?E:void 0,groups:3>D?E:F,items:3>D?F:G}),[D,E,F,G]);useEffect(()=>{2<D&&j(c[0])&&B(c[0])},[D]);const K=(a,b)=>{null===f||void 0===f?void 0:f({e:a,item:b}),j(b)&&B(b)},L=(a,b)=>{var c;const d=null===(c=i(b))||void 0===c?void 0:c.onMouseEnter;null===d||void 0===d?void 0:d(a),j(b)&&B(b)};return React.createElement("div",Object.assign({className:cnMegaMenu({withGlobalMenu:1<D,withBannersBar:0<(null!==n&&void 0!==n?n:[]).length,withNavBar:2!==D,bannerPosition:y},[v])},z),H&&React.createElement(NavBar,{items:H,className:cnMegaMenu("NavBar"),getItemActive:({item:a})=>C(a),getItemAs:({item:a})=>g(a),getItemAttributes:({item:a})=>_objectSpread(_objectSpread({},i(a)),{},{onMouseEnter:b=>L(b,a)}),getItemIconLeft:({item:a})=>k(a),getItemLabel:({item:a})=>l(a),getItemOnClick:({item:a})=>m(a),onItemClick:({e:a,item:{item:b}})=>K(a,b),getItemIconRight:({item:a})=>j(a)?IconArrowRight:void 0}),React.createElement("div",{className:cnMegaMenu("Wrapper")},2<=D&&React.createElement(GlobalMenu,{className:cnMegaMenu("GlobalMenu"),items:I,groups:J,title:null!==e&&void 0!==e?e:A?l(A):void 0,getGroupKey:({item:a})=>h(a),getGroupLabel:({item:a})=>l(a),getItemAs:({item:a})=>g(a),getItemAttributes:({item:a})=>i(a),getItemGroupId:({groupId:a})=>a,getItemLabel:({item:a})=>l(a),getItemOnClick:({item:a})=>m(a),getGroupOnClick:({item:a})=>m(a),onGroupClick:f?({e:a,group:{item:b}})=>{null===f||void 0===f?void 0:f({e:a,item:b})}:void 0,onItemClick:f?({e:a,item:{item:b}})=>null===f||void 0===f?void 0:f({e:a,item:b}):void 0,maxElements:d,showButtonText:x,hideButtonText:w}),n&&React.createElement(BannerBar,{className:cnMegaMenu("BannerBar"),items:n,view:"right"===y?"vertical":"horizontal",onItemClick:o,getItemAs:p,getItemAttributes:q,getItemDescription:r,getItemImage:s,getItemLabel:t,getItemOnClick:u})))};export*from"./types";
|
|
2
|
+
//# sourceMappingURL=MegaMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MegaMenu.js","names":["IconArrowRight","React","useEffect","useMemo","useState","cn","BannerBar","GlobalMenu","NavBar","getItemsDepth","separateItemsByDepth","withDefaultGetters","cnMegaMenu","MegaMenu","props","items","itemsProp","menuHideButtonText","menuMaxElements","menuShowButtonText","menuTitle","onItemClick","onItemClickProp","getItemAs","getItemKey","getItemAttributes","getItemSubMenu","getItemIconLeft","getItemLabel","getItemOnClick","banners","bannerPosition","onBannerClick","getBannerAs","getBannerAttributes","getBannerDescription","getBannerImage","getBannerLabel","getBannerOnClick","className","otherProps","activeItem","setActiveItem","getItemActive","item","depth","firstLevel","secondLevel","thirdLevel","navItems","groups","handleNavBarClick","e","handleNavBarMouseEnter","onMouseEnter","withGlobalMenu","withBannersBar","length","withNavBar","groupId","group"],"sources":["../../../../../src/components/MegaMenu/MegaMenu.tsx"],"sourcesContent":["import './MegaMenu.css';\n\nimport { IconArrowRight } from '@consta/uikit/IconArrowRight';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { cn } from '##/utils/bem';\n\nimport { BannerBar } from '../BannerBar';\nimport { GlobalMenu } from '../GlobalMenu';\nimport { NavBar } from '../NavBar';\nimport {\n getItemsDepth,\n separateItemsByDepth,\n withDefaultGetters,\n} from './helper';\nimport { MegaMenuProps } from './types';\n\nconst cnMegaMenu = cn('MegaMenu');\n\nexport const MegaMenu = (props: MegaMenuProps) => {\n const {\n // GlobalMenu\n items: itemsProp,\n menuHideButtonText = 'Скрыть',\n menuMaxElements,\n menuShowButtonText = 'Ещё',\n menuTitle,\n onItemClick: onItemClickProp,\n getItemAs,\n getItemKey,\n getItemAttributes,\n getItemSubMenu,\n getItemIconLeft,\n getItemLabel,\n getItemOnClick,\n // BannerBar\n banners,\n bannerPosition = 'right',\n onBannerClick,\n getBannerAs,\n getBannerAttributes,\n getBannerDescription,\n getBannerImage,\n getBannerLabel,\n getBannerOnClick,\n // Others\n className,\n ...otherProps\n } = withDefaultGetters(props);\n type ITEM = (typeof itemsProp)[number];\n\n const [activeItem, setActiveItem] = useState<ITEM | undefined>();\n\n const getItemActive = (item: ITEM) => {\n if (activeItem) {\n return getItemKey(activeItem) === getItemKey(item);\n }\n return false;\n };\n\n const depth = useMemo(\n () => getItemsDepth(itemsProp, getItemSubMenu),\n [itemsProp],\n );\n\n const [firstLevel, secondLevel, thirdLevel] = useMemo(\n () =>\n separateItemsByDepth({\n items: itemsProp,\n getItemKey,\n getItemSubMenu,\n getItemActive,\n depth,\n }),\n [itemsProp, activeItem],\n );\n\n const { navItems, items, groups } = useMemo(() => {\n return {\n navItems: depth < 2 || depth > 2 ? firstLevel : undefined,\n groups: depth < 3 ? firstLevel : secondLevel,\n items: depth < 3 ? secondLevel : thirdLevel,\n };\n }, [depth, firstLevel, secondLevel, thirdLevel]);\n\n useEffect(() => {\n if (depth > 2 && getItemSubMenu(itemsProp[0])) {\n setActiveItem(itemsProp[0]);\n }\n }, [depth]);\n\n const handleNavBarClick = (e: React.MouseEvent, item: ITEM) => {\n onItemClickProp?.({ e, item });\n if (getItemSubMenu(item)) {\n setActiveItem(item);\n }\n };\n\n const handleNavBarMouseEnter = (\n e: React.MouseEvent<HTMLDivElement>,\n item: ITEM,\n ) => {\n const onMouseEnter = getItemAttributes(item)\n ?.onMouseEnter as JSX.IntrinsicElements['div']['onMouseEnter'];\n onMouseEnter?.(e);\n if (getItemSubMenu(item)) {\n setActiveItem(item);\n }\n };\n\n return (\n <div\n className={cnMegaMenu(\n {\n withGlobalMenu: depth > 1,\n withBannersBar: (banners ?? []).length > 0,\n withNavBar: depth !== 2,\n bannerPosition,\n },\n [className],\n )}\n {...otherProps}\n >\n {navItems && (\n <NavBar\n items={navItems}\n className={cnMegaMenu('NavBar')}\n getItemActive={({ item }) => getItemActive(item)}\n getItemAs={({ item }) => getItemAs(item)}\n getItemAttributes={({ item }) =>\n ({\n ...getItemAttributes(item),\n onMouseEnter: (e: React.MouseEvent<HTMLDivElement>) =>\n handleNavBarMouseEnter(e, item),\n } as JSX.IntrinsicElements['div'])\n }\n getItemIconLeft={({ item }) => getItemIconLeft(item)}\n getItemLabel={({ item }) => getItemLabel(item)}\n getItemOnClick={({ item }) => getItemOnClick(item)}\n onItemClick={({ e, item: { item } }) => handleNavBarClick(e, item)}\n getItemIconRight={({ item }) =>\n getItemSubMenu(item) ? IconArrowRight : undefined\n }\n />\n )}\n <div className={cnMegaMenu('Wrapper')}>\n {depth >= 2 && (\n <GlobalMenu\n className={cnMegaMenu('GlobalMenu')}\n items={items}\n groups={groups}\n title={\n menuTitle ?? (activeItem ? getItemLabel(activeItem) : undefined)\n }\n getGroupKey={({ item }) => getItemKey(item)}\n getGroupLabel={({ item }) => getItemLabel(item)}\n getItemAs={({ item }) => getItemAs(item)}\n getItemAttributes={({ item }) => getItemAttributes(item)}\n getItemGroupId={({ groupId }) => groupId}\n getItemLabel={({ item }) => getItemLabel(item)}\n getItemOnClick={({ item }) => getItemOnClick(item)}\n getGroupOnClick={({ item }) => getItemOnClick(item)}\n onGroupClick={\n onItemClickProp\n ? ({ e, group: { item } }) => {\n onItemClickProp?.({ e, item });\n }\n : undefined\n }\n onItemClick={\n onItemClickProp\n ? ({ e, item: { item } }) => onItemClickProp?.({ e, item })\n : undefined\n }\n maxElements={menuMaxElements}\n showButtonText={menuShowButtonText}\n hideButtonText={menuHideButtonText}\n />\n )}\n {banners && (\n <BannerBar\n className={cnMegaMenu('BannerBar')}\n items={banners}\n view={bannerPosition === 'right' ? 'vertical' : 'horizontal'}\n onItemClick={onBannerClick}\n getItemAs={getBannerAs}\n getItemAttributes={getBannerAttributes}\n getItemDescription={getBannerDescription}\n getItemImage={getBannerImage}\n getItemLabel={getBannerLabel}\n getItemOnClick={getBannerOnClick}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport * from './types';\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.che--MegaMenuBox-Wrapper{max-width:var(--mega-menu-content-width);pointer-events:all;width:100%;width:var(--mega-menu-content-width)}.che--MegaMenuBox-Window{align-items:flex-start;background:var(--color-bg-default);display:flex;height:max-content;justify-content:center;pointer-events:none;position:absolute;top:var(--mega-menu-offset);transition:transform .24s ease,opacity .4s;width:100%;z-index:2}.che--MegaMenuBox-Window_animate_exited,.che--MegaMenuBox-Window_animate_exiting{opacity:0;transform:translate3d(0,-20%,0)}.che--MegaMenuBox-Window_animate_entered,.che--MegaMenuBox-Window_animate_entering{opacity:1;transform:translateZ(0)}.che--MegaMenuBox-Overlay{background:var(--color-bg-tone);bottom:0;height:100%;left:0;position:fixed;right:0;top:0;width:100%}.che--MegaMenuBox-Overlay_animate_exited,.che--MegaMenuBox-Overlay_animate_exiting{opacity:0}.che--MegaMenuBox-Overlay_animate_entered,.che--MegaMenuBox-Overlay_animate_entering{opacity:1}.che--MegaMenuBox-Overlay_animate_entered,.che--MegaMenuBox-Overlay_animate_entering,.che--MegaMenuBox-Overlay_animate_exited,.che--MegaMenuBox-Overlay_animate_exiting{transition:opacity .24s ease}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";const _excluded=["isOpen","onClickOutside","onEsc","offset","style","anchorRef","className","children","maxContentWidth"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./MegaMenuBox.css";import{PortalWithTheme,usePortalContext}from"@consta/uikit/PortalWithTheme";import{useTheme}from"@consta/uikit/Theme";import{useClickOutside}from"@consta/uikit/useClickOutside";import React,{useMemo,useRef}from"react";import{Transition}from"react-transition-group";import{cn}from"../../../utils/bem";const cnMegaMenuBox=cn("MegaMenuBox"),ContextConsumer=({onClickOutside:a,children:b,ignoreClicksInsideRefs:c})=>{const{refs:d}=usePortalContext();return useClickOutside({isActive:!!a,ignoreClicksInsideRefs:[...(c||[]),...(d||[])],handler:a}),b};export const MegaMenuBox=a=>{const{isOpen:b,onClickOutside:c,onEsc:d,offset:j=0,style:e,anchorRef:f,className:g,children:h,maxContentWidth:i}=a,k=_objectWithoutProperties(a,_excluded),l=useRef(null),m=useRef(null),{theme:n}=useTheme(),o=useMemo(()=>{var a,b,c,d;return(null!==(a=null===f||void 0===f||null===(b=f.current)||void 0===b?void 0:b.offsetTop)&&void 0!==a?a:0)+(null!==(c=null===f||void 0===f||null===(d=f.current)||void 0===d?void 0:d.offsetHeight)&&void 0!==c?c:0)+j},[j,null===f||void 0===f?void 0:f.current]);return React.createElement(Transition,{in:b,unmountOnExit:!0,timeout:240,nodeRef:l},a=>React.createElement(PortalWithTheme,Object.assign({preset:n,style:_objectSpread({"--mega-menu-offset":`${o}px`},e),className:cnMegaMenuBox(null,[g]),ref:l},k),React.createElement("div",{className:cnMegaMenuBox("Overlay",{animate:a})}),React.createElement(ContextConsumer,{onClickOutside:c,ignoreClicksInsideRefs:[m]},React.createElement("div",{ref:m,className:cnMegaMenuBox("Window",{animate:a})},React.createElement("div",{className:cnMegaMenuBox("Wrapper"),style:{"--mega-menu-content-width":i?`${i}px`:"100%"}},h)))))};
|
|
2
|
+
//# sourceMappingURL=MegaMenuBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MegaMenuBox.js","names":["PortalWithTheme","usePortalContext","useTheme","useClickOutside","React","useMemo","useRef","Transition","cn","cnMegaMenuBox","ContextConsumer","onClickOutside","children","ignoreClicksInsideRefs","refs","isActive","handler","MegaMenuBox","props","isOpen","onEsc","offset","offsetProp","style","anchorRef","className","maxContentWidth","otherProps","containerRef","menuRef","theme","current","offsetTop","offsetHeight","animate"],"sources":["../../../../../../src/components/MegaMenu/MegaMenuBox/MegaMenuBox.tsx"],"sourcesContent":["import './MegaMenuBox.css';\n\nimport {\n PortalWithTheme,\n usePortalContext,\n} from '@consta/uikit/PortalWithTheme';\nimport { useTheme } from '@consta/uikit/Theme';\nimport { useClickOutside } from '@consta/uikit/useClickOutside';\nimport React, { useMemo, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { cn } from '##/utils/bem';\n\nimport { MegaMenuBoxProps } from './types';\n\nconst cnMegaMenuBox = cn('MegaMenuBox');\n\nconst ContextConsumer: React.FC<{\n onClickOutside?: (event: MouseEvent) => void;\n ignoreClicksInsideRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n children: React.ReactNode;\n}> = ({ onClickOutside, children, ignoreClicksInsideRefs }) => {\n const { refs } = usePortalContext();\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [\n ...(ignoreClicksInsideRefs || []),\n ...(refs || []),\n ],\n handler: onClickOutside,\n });\n\n return children as React.ReactElement;\n};\n\nexport const MegaMenuBox = (props: MegaMenuBoxProps) => {\n const {\n isOpen,\n onClickOutside,\n onEsc,\n offset: offsetProp = 0,\n style,\n anchorRef,\n className,\n children,\n maxContentWidth,\n ...otherProps\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const { theme } = useTheme();\n\n const offset = useMemo(() => {\n return (\n (anchorRef?.current?.offsetTop ?? 0) +\n (anchorRef?.current?.offsetHeight ?? 0) +\n offsetProp\n );\n }, [offsetProp, anchorRef?.current]);\n\n return (\n <Transition in={isOpen} unmountOnExit timeout={240} nodeRef={containerRef}>\n {(animate) => (\n <PortalWithTheme\n preset={theme}\n style={{\n ['--mega-menu-offset' as string]: `${offset}px`,\n ...style,\n }}\n className={cnMegaMenuBox(null, [className])}\n ref={containerRef}\n {...otherProps}\n >\n <div className={cnMegaMenuBox('Overlay', { animate })} />\n <ContextConsumer\n onClickOutside={onClickOutside}\n ignoreClicksInsideRefs={[menuRef]}\n >\n <div ref={menuRef} className={cnMegaMenuBox('Window', { animate })}>\n <div\n className={cnMegaMenuBox('Wrapper')}\n style={{\n ['--mega-menu-content-width' as string]: maxContentWidth\n ? `${maxContentWidth}px`\n : '100%',\n }}\n >\n {children}\n </div>\n </div>\n </ContextConsumer>\n </PortalWithTheme>\n )}\n </Transition>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/MegaMenu/MegaMenuBox/index.ts"],"sourcesContent":["export * from './MegaMenuBox';\nexport * from './types';\n"],"mappings":"AAAA,2BACA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PropsWithHTMLAttributesAndRef } from "../../../utils/types/PropsWithHTMLAttributes";
|
|
3
|
+
export type MegaMenuBoxProps = PropsWithHTMLAttributesAndRef<{
|
|
4
|
+
offset?: number;
|
|
5
|
+
isOpen?: boolean;
|
|
6
|
+
onClickOutside?: (event: MouseEvent) => void;
|
|
7
|
+
onEsc?: (event: KeyboardEvent) => void;
|
|
8
|
+
anchorRef?: React.RefObject<HTMLElement>;
|
|
9
|
+
maxContentWidth?: number;
|
|
10
|
+
}, HTMLDivElement>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../../src/components/MegaMenu/MegaMenuBox/types.ts"],"sourcesContent":["import { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type MegaMenuBoxProps = PropsWithHTMLAttributesAndRef<\n {\n offset?: number;\n isOpen?: boolean;\n onClickOutside?: (event: MouseEvent) => void;\n onEsc?: (event: KeyboardEvent) => void;\n anchorRef?: React.RefObject<HTMLElement>;\n maxContentWidth?: number;\n },\n HTMLDivElement\n>;\n"],"mappings":""}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BannerBarDefaultItem, BannerBarPropGetItemAs, BannerBarPropGetItemAttributes, BannerBarPropGetItemDescription, BannerBarPropGetItemImage, BannerBarPropGetItemLabel, BannerBarPropGetItemOnClick } from '../BannerBar/types';
|
|
3
|
+
import { MegaMenuDefaultItem, MegaMenuPropGetItemAs, MegaMenuPropGetItemAttributes, MegaMenuPropGetItemIconLeft, MegaMenuPropGetItemKey, MegaMenuPropGetItemLabel, MegaMenuPropGetItemOnClick, MegaMenuPropGetItemSubMenu, MegaMenuProps } from './types';
|
|
4
|
+
export declare const withDefaultGetters: (props: MegaMenuProps) => {
|
|
5
|
+
getItemKey: MegaMenuPropGetItemKey<MegaMenuDefaultItem>;
|
|
6
|
+
getItemAs: MegaMenuPropGetItemAs<MegaMenuDefaultItem>;
|
|
7
|
+
getItemAttributes: MegaMenuPropGetItemAttributes<MegaMenuDefaultItem>;
|
|
8
|
+
getItemLabel: MegaMenuPropGetItemLabel<MegaMenuDefaultItem>;
|
|
9
|
+
getItemOnClick: MegaMenuPropGetItemOnClick<MegaMenuDefaultItem>;
|
|
10
|
+
getItemIconLeft: MegaMenuPropGetItemIconLeft<MegaMenuDefaultItem>;
|
|
11
|
+
getItemSubMenu: MegaMenuPropGetItemSubMenu<MegaMenuDefaultItem>;
|
|
12
|
+
getBannerAs: BannerBarPropGetItemAs<BannerBarDefaultItem>;
|
|
13
|
+
getBannerAttributes: BannerBarPropGetItemAttributes<BannerBarDefaultItem>;
|
|
14
|
+
getBannerLabel: BannerBarPropGetItemLabel<BannerBarDefaultItem>;
|
|
15
|
+
getBannerOnClick: BannerBarPropGetItemOnClick<BannerBarDefaultItem>;
|
|
16
|
+
getBannerImage: BannerBarPropGetItemImage<BannerBarDefaultItem>;
|
|
17
|
+
getBannerDescription: BannerBarPropGetItemDescription<BannerBarDefaultItem>;
|
|
18
|
+
banners?: BannerBarDefaultItem[] | undefined;
|
|
19
|
+
items: MegaMenuDefaultItem[];
|
|
20
|
+
menuTitle?: string | undefined;
|
|
21
|
+
menuShowButtonText?: string | undefined;
|
|
22
|
+
menuHideButtonText?: string | undefined;
|
|
23
|
+
menuMaxElements?: number | undefined;
|
|
24
|
+
bannerPosition?: "right" | "bottom" | undefined;
|
|
25
|
+
onItemClick?: import("./types").MegaMenuPropOnItemClick<MegaMenuDefaultItem> | undefined;
|
|
26
|
+
onBannerClick?: import("./types").MegaMenuPropOnItemClick<BannerBarDefaultItem> | undefined;
|
|
27
|
+
defaultChecked?: boolean | undefined;
|
|
28
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
29
|
+
suppressContentEditableWarning?: boolean | undefined;
|
|
30
|
+
suppressHydrationWarning?: boolean | undefined;
|
|
31
|
+
accessKey?: string | undefined;
|
|
32
|
+
className?: string | undefined;
|
|
33
|
+
contentEditable?: (boolean | "true" | "false") | "inherit" | undefined;
|
|
34
|
+
contextMenu?: string | undefined;
|
|
35
|
+
dir?: string | undefined;
|
|
36
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
37
|
+
hidden?: boolean | undefined;
|
|
38
|
+
id?: string | undefined;
|
|
39
|
+
lang?: string | undefined;
|
|
40
|
+
nonce?: string | undefined;
|
|
41
|
+
placeholder?: string | undefined;
|
|
42
|
+
slot?: string | undefined;
|
|
43
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
44
|
+
style?: import("react").CSSProperties | undefined;
|
|
45
|
+
tabIndex?: number | undefined;
|
|
46
|
+
title?: string | undefined;
|
|
47
|
+
translate?: "yes" | "no" | undefined;
|
|
48
|
+
radioGroup?: string | undefined;
|
|
49
|
+
role?: import("react").AriaRole | undefined;
|
|
50
|
+
about?: string | undefined;
|
|
51
|
+
datatype?: string | undefined;
|
|
52
|
+
inlist?: any;
|
|
53
|
+
prefix?: string | undefined;
|
|
54
|
+
property?: string | undefined;
|
|
55
|
+
resource?: string | undefined;
|
|
56
|
+
typeof?: string | undefined;
|
|
57
|
+
vocab?: string | undefined;
|
|
58
|
+
autoCapitalize?: string | undefined;
|
|
59
|
+
autoCorrect?: string | undefined;
|
|
60
|
+
autoSave?: string | undefined;
|
|
61
|
+
color?: string | undefined;
|
|
62
|
+
itemProp?: string | undefined;
|
|
63
|
+
itemScope?: boolean | undefined;
|
|
64
|
+
itemType?: string | undefined;
|
|
65
|
+
itemID?: string | undefined;
|
|
66
|
+
itemRef?: string | undefined;
|
|
67
|
+
results?: number | undefined;
|
|
68
|
+
security?: string | undefined;
|
|
69
|
+
unselectable?: "on" | "off" | undefined;
|
|
70
|
+
inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
|
|
71
|
+
is?: string | undefined;
|
|
72
|
+
'aria-activedescendant'?: string | undefined;
|
|
73
|
+
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
74
|
+
'aria-autocomplete'?: "list" | "none" | "inline" | "both" | undefined;
|
|
75
|
+
'aria-busy'?: (boolean | "true" | "false") | undefined;
|
|
76
|
+
'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
|
|
77
|
+
'aria-colcount'?: number | undefined;
|
|
78
|
+
'aria-colindex'?: number | undefined;
|
|
79
|
+
'aria-colspan'?: number | undefined;
|
|
80
|
+
'aria-controls'?: string | undefined;
|
|
81
|
+
'aria-current'?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
|
|
82
|
+
'aria-describedby'?: string | undefined;
|
|
83
|
+
'aria-details'?: string | undefined;
|
|
84
|
+
'aria-disabled'?: (boolean | "true" | "false") | undefined;
|
|
85
|
+
'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
|
|
86
|
+
'aria-errormessage'?: string | undefined;
|
|
87
|
+
'aria-expanded'?: (boolean | "true" | "false") | undefined;
|
|
88
|
+
'aria-flowto'?: string | undefined;
|
|
89
|
+
'aria-grabbed'?: (boolean | "true" | "false") | undefined;
|
|
90
|
+
'aria-haspopup'?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
|
|
91
|
+
'aria-hidden'?: (boolean | "true" | "false") | undefined;
|
|
92
|
+
'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
|
|
93
|
+
'aria-keyshortcuts'?: string | undefined;
|
|
94
|
+
'aria-label'?: string | undefined;
|
|
95
|
+
'aria-labelledby'?: string | undefined;
|
|
96
|
+
'aria-level'?: number | undefined;
|
|
97
|
+
'aria-live'?: "off" | "assertive" | "polite" | undefined;
|
|
98
|
+
'aria-modal'?: (boolean | "true" | "false") | undefined;
|
|
99
|
+
'aria-multiline'?: (boolean | "true" | "false") | undefined;
|
|
100
|
+
'aria-multiselectable'?: (boolean | "true" | "false") | undefined;
|
|
101
|
+
'aria-orientation'?: "horizontal" | "vertical" | undefined;
|
|
102
|
+
'aria-owns'?: string | undefined;
|
|
103
|
+
'aria-placeholder'?: string | undefined;
|
|
104
|
+
'aria-posinset'?: number | undefined;
|
|
105
|
+
'aria-pressed'?: boolean | "true" | "false" | "mixed" | undefined;
|
|
106
|
+
'aria-readonly'?: (boolean | "true" | "false") | undefined;
|
|
107
|
+
'aria-relevant'?: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
|
|
108
|
+
'aria-required'?: (boolean | "true" | "false") | undefined;
|
|
109
|
+
'aria-roledescription'?: string | undefined;
|
|
110
|
+
'aria-rowcount'?: number | undefined;
|
|
111
|
+
'aria-rowindex'?: number | undefined;
|
|
112
|
+
'aria-rowspan'?: number | undefined;
|
|
113
|
+
'aria-selected'?: (boolean | "true" | "false") | undefined;
|
|
114
|
+
'aria-setsize'?: number | undefined;
|
|
115
|
+
'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
|
|
116
|
+
'aria-valuemax'?: number | undefined;
|
|
117
|
+
'aria-valuemin'?: number | undefined;
|
|
118
|
+
'aria-valuenow'?: number | undefined;
|
|
119
|
+
'aria-valuetext'?: string | undefined;
|
|
120
|
+
children?: import("react").ReactNode;
|
|
121
|
+
dangerouslySetInnerHTML?: {
|
|
122
|
+
__html: string;
|
|
123
|
+
} | undefined;
|
|
124
|
+
onCopy?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
125
|
+
onCopyCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
126
|
+
onCut?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
127
|
+
onCutCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
128
|
+
onPaste?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
129
|
+
onPasteCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
130
|
+
onCompositionEnd?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
131
|
+
onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
132
|
+
onCompositionStart?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
133
|
+
onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
134
|
+
onCompositionUpdate?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
135
|
+
onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
136
|
+
onFocus?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
137
|
+
onFocusCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
138
|
+
onBlur?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
139
|
+
onBlurCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
140
|
+
onChange?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
141
|
+
onChangeCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
142
|
+
onBeforeInput?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
143
|
+
onBeforeInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
144
|
+
onInput?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
145
|
+
onInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
146
|
+
onReset?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
147
|
+
onResetCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
148
|
+
onSubmit?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
149
|
+
onSubmitCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
150
|
+
onInvalid?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
151
|
+
onInvalidCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
|
|
152
|
+
onLoad?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
153
|
+
onLoadCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
154
|
+
onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
155
|
+
onErrorCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
156
|
+
onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
157
|
+
onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
158
|
+
onKeyPress?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
159
|
+
onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
160
|
+
onKeyUp?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
161
|
+
onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
162
|
+
onAbort?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
163
|
+
onAbortCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
164
|
+
onCanPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
165
|
+
onCanPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
166
|
+
onCanPlayThrough?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
167
|
+
onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
168
|
+
onDurationChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
169
|
+
onDurationChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
170
|
+
onEmptied?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
171
|
+
onEmptiedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
172
|
+
onEncrypted?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
173
|
+
onEncryptedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
174
|
+
onEnded?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
175
|
+
onEndedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
176
|
+
onLoadedData?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
177
|
+
onLoadedDataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
178
|
+
onLoadedMetadata?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
179
|
+
onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
180
|
+
onLoadStart?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
181
|
+
onLoadStartCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
182
|
+
onPause?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
183
|
+
onPauseCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
184
|
+
onPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
185
|
+
onPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
186
|
+
onPlaying?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
187
|
+
onPlayingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
188
|
+
onProgress?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
189
|
+
onProgressCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
190
|
+
onRateChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
191
|
+
onRateChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
192
|
+
onResize?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
193
|
+
onResizeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
194
|
+
onSeeked?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
195
|
+
onSeekedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
196
|
+
onSeeking?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
197
|
+
onSeekingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
198
|
+
onStalled?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
199
|
+
onStalledCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
200
|
+
onSuspend?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
201
|
+
onSuspendCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
202
|
+
onTimeUpdate?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
203
|
+
onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
204
|
+
onVolumeChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
205
|
+
onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
206
|
+
onWaiting?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
207
|
+
onWaitingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
208
|
+
onAuxClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
209
|
+
onAuxClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
210
|
+
onClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
211
|
+
onClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
212
|
+
onContextMenu?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
213
|
+
onContextMenuCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
214
|
+
onDoubleClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
215
|
+
onDoubleClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
216
|
+
onDrag?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
217
|
+
onDragCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
218
|
+
onDragEnd?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
219
|
+
onDragEndCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
220
|
+
onDragEnter?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
221
|
+
onDragEnterCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
222
|
+
onDragExit?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
223
|
+
onDragExitCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
224
|
+
onDragLeave?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
225
|
+
onDragLeaveCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
226
|
+
onDragOver?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
227
|
+
onDragOverCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
228
|
+
onDragStart?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
229
|
+
onDragStartCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
230
|
+
onDrop?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
231
|
+
onDropCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
232
|
+
onMouseDown?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
233
|
+
onMouseDownCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
234
|
+
onMouseEnter?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
235
|
+
onMouseLeave?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
236
|
+
onMouseMove?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
237
|
+
onMouseMoveCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
238
|
+
onMouseOut?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
239
|
+
onMouseOutCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
240
|
+
onMouseOver?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
241
|
+
onMouseOverCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
242
|
+
onMouseUp?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
243
|
+
onMouseUpCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
244
|
+
onSelect?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
245
|
+
onSelectCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
246
|
+
onTouchCancel?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
247
|
+
onTouchCancelCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
248
|
+
onTouchEnd?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
249
|
+
onTouchEndCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
250
|
+
onTouchMove?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
251
|
+
onTouchMoveCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
252
|
+
onTouchStart?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
253
|
+
onTouchStartCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
254
|
+
onPointerDown?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
255
|
+
onPointerDownCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
256
|
+
onPointerMove?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
257
|
+
onPointerMoveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
258
|
+
onPointerUp?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
259
|
+
onPointerUpCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
260
|
+
onPointerCancel?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
261
|
+
onPointerCancelCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
262
|
+
onPointerEnter?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
263
|
+
onPointerEnterCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
264
|
+
onPointerLeave?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
265
|
+
onPointerLeaveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
266
|
+
onPointerOver?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
267
|
+
onPointerOverCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
268
|
+
onPointerOut?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
269
|
+
onPointerOutCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
270
|
+
onGotPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
271
|
+
onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
272
|
+
onLostPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
273
|
+
onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
274
|
+
onScroll?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
275
|
+
onScrollCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
276
|
+
onWheel?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
|
|
277
|
+
onWheelCapture?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
|
|
278
|
+
onAnimationStart?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
279
|
+
onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
280
|
+
onAnimationEnd?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
281
|
+
onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
282
|
+
onAnimationIteration?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
283
|
+
onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
284
|
+
onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
285
|
+
onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
286
|
+
ref?: import("react").Ref<HTMLDivElement> | undefined;
|
|
287
|
+
key?: import("react").Key | null | undefined;
|
|
288
|
+
};
|
|
289
|
+
type Level<ITEM> = Array<{
|
|
290
|
+
groupId?: string | number;
|
|
291
|
+
item: ITEM;
|
|
292
|
+
}>;
|
|
293
|
+
export declare const getItemsDepth: <ITEM>(items: ITEM[], getItemSubMenu: MegaMenuPropGetItemSubMenu<ITEM>) => number;
|
|
294
|
+
export declare const separateItemsByDepth: <ITEM>(params: {
|
|
295
|
+
getItemKey: MegaMenuPropGetItemKey<ITEM>;
|
|
296
|
+
items: ITEM[];
|
|
297
|
+
getItemSubMenu: MegaMenuPropGetItemSubMenu<ITEM>;
|
|
298
|
+
getItemActive: (item: ITEM) => boolean;
|
|
299
|
+
depth?: number | undefined;
|
|
300
|
+
}) => [Level<ITEM>, Level<ITEM>, Level<ITEM>];
|
|
301
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}const defaultGetItemKey=a=>a.key,defaultGetItemLabel=a=>a.label,defaultGetItemIconLeft=a=>a.iconLeft,defaultGetItemOnClick=a=>a.onClick,defaultGetItemAs=a=>a.as,defaultGetItemAttributes=a=>a.attributes,defaultGetItemSubMenu=a=>a.subMenu,defaultGetBannerLabel=a=>a.label,defaultGetBannerOnClick=a=>a.onClick,defaultGetBannerDescription=a=>a.description,defaultGetBannerImage=a=>a.image,defaultGetBannerAs=a=>a.as,defaultGetBannerAttributees=a=>a.attributes;export const withDefaultGetters=a=>_objectSpread(_objectSpread({},a),{},{getItemKey:a.getItemKey||defaultGetItemKey,getItemAs:a.getItemAs||defaultGetItemAs,getItemAttributes:a.getItemAttributes||defaultGetItemAttributes,getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemOnClick:a.getItemOnClick||defaultGetItemOnClick,getItemIconLeft:a.getItemIconLeft||defaultGetItemIconLeft,getItemSubMenu:a.getItemSubMenu||defaultGetItemSubMenu,getBannerAs:a.getBannerAs||defaultGetBannerAs,getBannerAttributes:a.getBannerAttributes||defaultGetBannerAttributees,getBannerLabel:a.getBannerLabel||defaultGetBannerLabel,getBannerOnClick:a.getBannerOnClick||defaultGetBannerOnClick,getBannerImage:a.getBannerImage||defaultGetBannerImage,getBannerDescription:a.getBannerDescription||defaultGetBannerDescription});export const getItemsDepth=(a,b)=>{let c=1;return a.forEach(a=>{const d=b(a);d&&(1==c&&(c+=1),d.forEach(a=>{const d=b(a);2==c&&d&&(c+=1)}))}),c};export const separateItemsByDepth=a=>{const{items:b,getItemKey:c,getItemSubMenu:d,getItemActive:e,depth:f=3}=a,g=[],h=[],i=[];return b.forEach(a=>{const b=d(a),j=c(a);g.push({item:a}),b&&b.forEach(b=>{const g=d(b),k=c(b);(e(a)||2===f)&&(h.push({groupId:j,item:b}),g&&g.forEach(a=>{i.push({groupId:k,item:a})}))})}),[g,h,i]};
|
|
2
|
+
//# sourceMappingURL=helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.js","names":["defaultGetItemKey","item","key","defaultGetItemLabel","label","defaultGetItemIconLeft","iconLeft","defaultGetItemOnClick","onClick","defaultGetItemAs","as","defaultGetItemAttributes","attributes","defaultGetItemSubMenu","subMenu","defaultGetBannerLabel","defaultGetBannerOnClick","defaultGetBannerDescription","description","defaultGetBannerImage","image","defaultGetBannerAs","defaultGetBannerAttributees","withDefaultGetters","props","getItemKey","getItemAs","getItemAttributes","getItemLabel","getItemOnClick","getItemIconLeft","getItemSubMenu","getBannerAs","getBannerAttributes","getBannerLabel","getBannerOnClick","getBannerImage","getBannerDescription","getItemsDepth","items","depth","forEach","secondArr","el","thirdArr","separateItemsByDepth","params","getItemActive","firstLevel","secondLevel","thirdLevel","firstLevelItemKey","push","secondLevelItemKey","groupId","subItem"],"sources":["../../../../../src/components/MegaMenu/helper.ts"],"sourcesContent":["import {\n BannerBarDefaultItem,\n BannerBarPropGetItemAs,\n BannerBarPropGetItemAttributes,\n BannerBarPropGetItemDescription,\n BannerBarPropGetItemImage,\n BannerBarPropGetItemLabel,\n BannerBarPropGetItemOnClick,\n} from '../BannerBar/types';\nimport {\n MegaMenuDefaultItem,\n MegaMenuPropGetItemAs,\n MegaMenuPropGetItemAttributes,\n MegaMenuPropGetItemIconLeft,\n MegaMenuPropGetItemKey,\n MegaMenuPropGetItemLabel,\n MegaMenuPropGetItemOnClick,\n MegaMenuPropGetItemSubMenu,\n MegaMenuProps,\n} from './types';\n\n// Menu\nconst defaultGetItemKey: MegaMenuPropGetItemKey<MegaMenuDefaultItem> = (item) =>\n item.key;\nconst defaultGetItemLabel: MegaMenuPropGetItemLabel<MegaMenuDefaultItem> = (\n item,\n) => item.label;\nconst defaultGetItemIconLeft: MegaMenuPropGetItemIconLeft<\n MegaMenuDefaultItem\n> = (item) => item.iconLeft;\nconst defaultGetItemOnClick: MegaMenuPropGetItemOnClick<MegaMenuDefaultItem> = (\n item,\n) => item.onClick;\nconst defaultGetItemAs: MegaMenuPropGetItemAs<MegaMenuDefaultItem> = (item) =>\n item.as;\nconst defaultGetItemAttributes: MegaMenuPropGetItemAttributes<\n MegaMenuDefaultItem\n> = (item) => item.attributes;\nconst defaultGetItemSubMenu: MegaMenuPropGetItemSubMenu<MegaMenuDefaultItem> = (\n item,\n) => item.subMenu;\n\n// BannerBar\nconst defaultGetBannerLabel: BannerBarPropGetItemLabel<BannerBarDefaultItem> = (\n item,\n) => item.label;\nconst defaultGetBannerOnClick: BannerBarPropGetItemOnClick<\n BannerBarDefaultItem\n> = (item) => item.onClick;\nconst defaultGetBannerDescription: BannerBarPropGetItemDescription<\n BannerBarDefaultItem\n> = (item) => item.description;\nconst defaultGetBannerImage: BannerBarPropGetItemImage<BannerBarDefaultItem> = (\n item,\n) => item.image;\nconst defaultGetBannerAs: BannerBarPropGetItemAs<BannerBarDefaultItem> = (\n item,\n) => item.as;\nconst defaultGetBannerAttributees: BannerBarPropGetItemAttributes<\n BannerBarDefaultItem\n> = (item) => item.attributes;\n\nexport const withDefaultGetters = (props: MegaMenuProps) => ({\n ...props,\n // Menu\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemAs: props.getItemAs || defaultGetItemAs,\n getItemAttributes: props.getItemAttributes || defaultGetItemAttributes,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemOnClick: props.getItemOnClick || defaultGetItemOnClick,\n getItemIconLeft: props.getItemIconLeft || defaultGetItemIconLeft,\n getItemSubMenu: props.getItemSubMenu || defaultGetItemSubMenu,\n // BannerBar\n getBannerAs: props.getBannerAs || defaultGetBannerAs,\n getBannerAttributes: props.getBannerAttributes || defaultGetBannerAttributees,\n getBannerLabel: props.getBannerLabel || defaultGetBannerLabel,\n getBannerOnClick: props.getBannerOnClick || defaultGetBannerOnClick,\n getBannerImage: props.getBannerImage || defaultGetBannerImage,\n getBannerDescription:\n props.getBannerDescription || defaultGetBannerDescription,\n});\n\ntype Level<ITEM> = Array<{ groupId?: string | number; item: ITEM }>;\n\nexport const getItemsDepth = <ITEM>(\n items: ITEM[],\n getItemSubMenu: MegaMenuPropGetItemSubMenu<ITEM>,\n) => {\n let depth = 1;\n items.forEach((item) => {\n const secondArr = getItemSubMenu(item);\n if (secondArr) {\n if (depth === 1) {\n depth += 1;\n }\n secondArr.forEach((el) => {\n const thirdArr = getItemSubMenu(el);\n if (depth === 2 && thirdArr) {\n depth += 1;\n }\n });\n }\n });\n return depth;\n};\n\nexport const separateItemsByDepth = <ITEM>(params: {\n getItemKey: MegaMenuPropGetItemKey<ITEM>;\n items: ITEM[];\n getItemSubMenu: MegaMenuPropGetItemSubMenu<ITEM>;\n getItemActive: (item: ITEM) => boolean;\n depth?: number;\n}): [Level<ITEM>, Level<ITEM>, Level<ITEM>] => {\n const {\n items,\n getItemKey,\n getItemSubMenu,\n getItemActive,\n depth = 3,\n } = params;\n const firstLevel: Level<ITEM> = [];\n const secondLevel: Level<ITEM> = [];\n const thirdLevel: Level<ITEM> = [];\n items.forEach((item) => {\n const secondArr = getItemSubMenu(item);\n const firstLevelItemKey = getItemKey(item);\n firstLevel.push({ item });\n if (secondArr) {\n secondArr.forEach((el) => {\n const thirdArr = getItemSubMenu(el);\n const secondLevelItemKey = getItemKey(el);\n if (getItemActive(item) || depth === 2) {\n secondLevel.push({ groupId: firstLevelItemKey, item: el });\n if (thirdArr) {\n thirdArr.forEach((subItem) => {\n thirdLevel.push({ groupId: secondLevelItemKey, item: subItem });\n });\n }\n }\n });\n }\n });\n return [firstLevel, secondLevel, thirdLevel];\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/MegaMenu/index.ts"],"sourcesContent":["export * from './MegaMenu';\nexport * from './types';\nexport * from './MegaMenuBox';\n"],"mappings":"AAAA,wBACA,qBACA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { IconComponent } from '@consta/uikit/Icon';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BannerBarDefaultItem, BannerBarPropGetItemAs, BannerBarPropGetItemAttributes, BannerBarPropGetItemDescription, BannerBarPropGetItemImage, BannerBarPropGetItemLabel, BannerBarPropGetItemOnClick } from "../BannerBar/types";
|
|
4
|
+
import { PropsWithHTMLAttributesAndRef } from "../../utils/types/PropsWithHTMLAttributes";
|
|
5
|
+
export type MegaMenuPropOnItemClick<ITEM> = (params: {
|
|
6
|
+
e: React.MouseEvent;
|
|
7
|
+
item: ITEM;
|
|
8
|
+
}) => void;
|
|
9
|
+
export type MegaMenuDefaultItem = {
|
|
10
|
+
key: string | number;
|
|
11
|
+
label: string;
|
|
12
|
+
iconLeft?: IconComponent;
|
|
13
|
+
as?: keyof JSX.IntrinsicElements;
|
|
14
|
+
attributes?: JSX.IntrinsicElements[keyof JSX.IntrinsicElements];
|
|
15
|
+
subMenu?: MegaMenuDefaultItem[];
|
|
16
|
+
onClick?: React.MouseEventHandler;
|
|
17
|
+
};
|
|
18
|
+
export type MegaMenuPropGetItemKey<ITEM> = (item: ITEM) => string | number;
|
|
19
|
+
export type MegaMenuPropGetItemLabel<ITEM> = (item: ITEM) => string;
|
|
20
|
+
export type MegaMenuPropGetItemIconLeft<ITEM> = (item: ITEM) => IconComponent | undefined;
|
|
21
|
+
export type MegaMenuPropGetItemOnClick<ITEM> = (item: ITEM) => React.MouseEventHandler | undefined;
|
|
22
|
+
export type MegaMenuPropGetItemAs<ITEM> = (item: ITEM) => keyof JSX.IntrinsicElements | undefined;
|
|
23
|
+
export type MegaMenuPropGetItemAttributes<ITEM> = (item: ITEM) => JSX.IntrinsicElements[keyof JSX.IntrinsicElements] | undefined;
|
|
24
|
+
export type MegaMenuPropGetItemSubMenu<ITEM> = (item: ITEM) => ITEM[] | undefined;
|
|
25
|
+
export type ItemMappers<ITEM = MegaMenuDefaultItem> = {
|
|
26
|
+
getItemKey?: MegaMenuPropGetItemKey<ITEM>;
|
|
27
|
+
getItemLabel?: MegaMenuPropGetItemLabel<ITEM>;
|
|
28
|
+
getItemIconLeft?: MegaMenuPropGetItemIconLeft<ITEM>;
|
|
29
|
+
getItemOnClick?: MegaMenuPropGetItemOnClick<ITEM>;
|
|
30
|
+
getItemAs?: MegaMenuPropGetItemAs<ITEM>;
|
|
31
|
+
getItemAttributes?: MegaMenuPropGetItemAttributes<ITEM>;
|
|
32
|
+
getItemSubMenu?: MegaMenuPropGetItemSubMenu<ITEM>;
|
|
33
|
+
};
|
|
34
|
+
export type BannerMappers<ITEM = BannerBarDefaultItem> = {
|
|
35
|
+
getBannerLabel?: BannerBarPropGetItemLabel<ITEM>;
|
|
36
|
+
getBannerOnClick?: BannerBarPropGetItemOnClick<ITEM>;
|
|
37
|
+
getBannerDescription?: BannerBarPropGetItemDescription<ITEM>;
|
|
38
|
+
getBannerImage?: BannerBarPropGetItemImage<ITEM>;
|
|
39
|
+
getBannerAs?: BannerBarPropGetItemAs<ITEM>;
|
|
40
|
+
getBannerAttributes?: BannerBarPropGetItemAttributes<ITEM>;
|
|
41
|
+
};
|
|
42
|
+
export type MegaMenuProps<ITEM = MegaMenuDefaultItem, BANNER = BannerBarDefaultItem> = PropsWithHTMLAttributesAndRef<{
|
|
43
|
+
banners?: BANNER[];
|
|
44
|
+
items: ITEM[];
|
|
45
|
+
menuTitle?: string;
|
|
46
|
+
menuShowButtonText?: string;
|
|
47
|
+
menuHideButtonText?: string;
|
|
48
|
+
menuMaxElements?: number;
|
|
49
|
+
bannerPosition?: 'right' | 'bottom';
|
|
50
|
+
onItemClick?: MegaMenuPropOnItemClick<ITEM>;
|
|
51
|
+
onBannerClick?: MegaMenuPropOnItemClick<BANNER>;
|
|
52
|
+
} & BannerMappers<BANNER> & ItemMappers<ITEM> & (ITEM extends {
|
|
53
|
+
key: MegaMenuDefaultItem['key'];
|
|
54
|
+
} ? {} : {
|
|
55
|
+
getItemKey: MegaMenuPropGetItemKey<ITEM>;
|
|
56
|
+
}) & (ITEM extends {
|
|
57
|
+
label: MegaMenuDefaultItem['label'];
|
|
58
|
+
} ? {} : {
|
|
59
|
+
getItemLabel: MegaMenuPropGetItemLabel<ITEM>;
|
|
60
|
+
}) & (BANNER extends {
|
|
61
|
+
label: BannerBarDefaultItem['label'] | unknown;
|
|
62
|
+
} ? {} : {
|
|
63
|
+
getBannerLabel: BannerBarPropGetItemLabel<ITEM>;
|
|
64
|
+
}), HTMLDivElement>;
|
|
65
|
+
export type MegaMenuComponent = <ITEM = MegaMenuDefaultItem, BANNER = BannerBarDefaultItem>(props: MegaMenuProps<ITEM, BANNER>, ref: React.Ref<HTMLDivElement>) => React.ReactElement | null;
|