@cloud-ru/uikit-product-header 5.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3498 -0
- package/LICENSE +201 -0
- package/README.md +322 -0
- package/dist/cjs/components/HeaderLayout/HeaderLayout.d.ts +12 -0
- package/dist/cjs/components/HeaderLayout/HeaderLayout.js +25 -0
- package/dist/cjs/components/HeaderLayout/index.d.ts +1 -0
- package/dist/cjs/components/HeaderLayout/index.js +17 -0
- package/dist/cjs/components/HeaderLayout/styles.module.css +35 -0
- package/dist/cjs/components/Logo/Logo.d.ts +20 -0
- package/dist/cjs/components/Logo/Logo.js +61 -0
- package/dist/cjs/components/Logo/index.d.ts +1 -0
- package/dist/cjs/components/Logo/index.js +17 -0
- package/dist/cjs/components/Logo/styles.module.css +28 -0
- package/dist/cjs/components/MainMenu/Content/Content.d.ts +20 -0
- package/dist/cjs/components/MainMenu/Content/Content.js +36 -0
- package/dist/cjs/components/MainMenu/Content/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/Content/index.js +17 -0
- package/dist/cjs/components/MainMenu/Content/styles.module.css +40 -0
- package/dist/cjs/components/MainMenu/MainMenu.d.ts +4 -0
- package/dist/cjs/components/MainMenu/MainMenu.js +16 -0
- package/dist/cjs/components/MainMenu/MenuDesktop/MenuDesktop.d.ts +2 -0
- package/dist/cjs/components/MainMenu/MenuDesktop/MenuDesktop.js +34 -0
- package/dist/cjs/components/MainMenu/MenuDesktop/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/MenuDesktop/index.js +17 -0
- package/dist/cjs/components/MainMenu/MenuDesktop/styles.module.css +94 -0
- package/dist/cjs/components/MainMenu/MenuMobile/MenuMobile.d.ts +2 -0
- package/dist/cjs/components/MainMenu/MenuMobile/MenuMobile.js +31 -0
- package/dist/cjs/components/MainMenu/MenuMobile/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/MenuMobile/index.js +17 -0
- package/dist/cjs/components/MainMenu/MenuMobile/styles.module.css +23 -0
- package/dist/cjs/components/MainMenu/Search/SearchDesktop/SearchDesktop.d.ts +2 -0
- package/dist/cjs/components/MainMenu/Search/SearchDesktop/SearchDesktop.js +18 -0
- package/dist/cjs/components/MainMenu/Search/SearchDesktop/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/Search/SearchDesktop/index.js +17 -0
- package/dist/cjs/components/MainMenu/Search/SearchDesktop/styles.module.css +17 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/SearchMobile.d.ts +2 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/SearchMobile.js +42 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/constants.d.ts +4 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/constants.js +7 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/hooks.d.ts +12 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/hooks.js +40 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/index.js +17 -0
- package/dist/cjs/components/MainMenu/Search/SearchMobile/styles.module.css +57 -0
- package/dist/cjs/components/MainMenu/Search/SearchSettingsButton/SearchSettingsButton.d.ts +4 -0
- package/dist/cjs/components/MainMenu/Search/SearchSettingsButton/SearchSettingsButton.js +13 -0
- package/dist/cjs/components/MainMenu/Search/SearchSettingsButton/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/Search/SearchSettingsButton/index.js +17 -0
- package/dist/cjs/components/MainMenu/Search/SearchSettingsButton/styles.module.css +11 -0
- package/dist/cjs/components/MainMenu/Search/index.d.ts +3 -0
- package/dist/cjs/components/MainMenu/Search/index.js +19 -0
- package/dist/cjs/components/MainMenu/Search/types.d.ts +14 -0
- package/dist/cjs/components/MainMenu/Search/types.js +2 -0
- package/dist/cjs/components/MainMenu/Search/useSearch.d.ts +8 -0
- package/dist/cjs/components/MainMenu/Search/useSearch.js +169 -0
- package/dist/cjs/components/MainMenu/hooks.d.ts +10 -0
- package/dist/cjs/components/MainMenu/hooks.js +108 -0
- package/dist/cjs/components/MainMenu/index.d.ts +4 -0
- package/dist/cjs/components/MainMenu/index.js +20 -0
- package/dist/cjs/components/MainMenu/styles.module.css +28 -0
- package/dist/cjs/components/MainMenu/types.d.ts +49 -0
- package/dist/cjs/components/MainMenu/types.js +2 -0
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.js +12 -0
- package/dist/cjs/components/PathBreadcrumbs/index.d.ts +1 -0
- package/dist/cjs/components/PathBreadcrumbs/index.js +17 -0
- package/dist/cjs/components/PathBreadcrumbs/styles.module.css +5 -0
- package/dist/cjs/components/PlatformLogo/Container.d.ts +12 -0
- package/dist/cjs/components/PlatformLogo/Container.js +28 -0
- package/dist/cjs/components/PlatformLogo/index.d.ts +4 -0
- package/dist/cjs/components/PlatformLogo/index.js +9 -0
- package/dist/cjs/components/PlatformLogo/styles.module.css +11 -0
- package/dist/cjs/components/UserMenu/UserMenu.d.ts +14 -0
- package/dist/cjs/components/UserMenu/UserMenu.js +54 -0
- package/dist/cjs/components/UserMenu/hooks/useLogoutItem.d.ts +6 -0
- package/dist/cjs/components/UserMenu/hooks/useLogoutItem.js +21 -0
- package/dist/cjs/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
- package/dist/cjs/components/UserMenu/hooks/useProfileItem.js +29 -0
- package/dist/cjs/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
- package/dist/cjs/components/UserMenu/hooks/useThemeItem.js +75 -0
- package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.d.ts +13 -0
- package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.js +42 -0
- package/dist/cjs/components/UserMenu/index.d.ts +2 -0
- package/dist/cjs/components/UserMenu/index.js +18 -0
- package/dist/cjs/components/UserMenu/styles.module.css +21 -0
- package/dist/cjs/components/UserMenu/types.d.ts +20 -0
- package/dist/cjs/components/UserMenu/types.js +8 -0
- package/dist/cjs/components/index.d.ts +6 -0
- package/dist/cjs/components/index.js +22 -0
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.js +17 -0
- package/dist/cjs/hooks/useLocalStorage.d.ts +1 -0
- package/dist/cjs/hooks/useLocalStorage.js +13 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +18 -0
- package/dist/esm/components/HeaderLayout/HeaderLayout.d.ts +12 -0
- package/dist/esm/components/HeaderLayout/HeaderLayout.js +19 -0
- package/dist/esm/components/HeaderLayout/index.d.ts +1 -0
- package/dist/esm/components/HeaderLayout/index.js +1 -0
- package/dist/esm/components/HeaderLayout/styles.module.css +35 -0
- package/dist/esm/components/Logo/Logo.d.ts +20 -0
- package/dist/esm/components/Logo/Logo.js +54 -0
- package/dist/esm/components/Logo/index.d.ts +1 -0
- package/dist/esm/components/Logo/index.js +1 -0
- package/dist/esm/components/Logo/styles.module.css +28 -0
- package/dist/esm/components/MainMenu/Content/Content.d.ts +20 -0
- package/dist/esm/components/MainMenu/Content/Content.js +30 -0
- package/dist/esm/components/MainMenu/Content/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/Content/index.js +1 -0
- package/dist/esm/components/MainMenu/Content/styles.module.css +40 -0
- package/dist/esm/components/MainMenu/MainMenu.d.ts +4 -0
- package/dist/esm/components/MainMenu/MainMenu.js +13 -0
- package/dist/esm/components/MainMenu/MenuDesktop/MenuDesktop.d.ts +2 -0
- package/dist/esm/components/MainMenu/MenuDesktop/MenuDesktop.js +28 -0
- package/dist/esm/components/MainMenu/MenuDesktop/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/MenuDesktop/index.js +1 -0
- package/dist/esm/components/MainMenu/MenuDesktop/styles.module.css +94 -0
- package/dist/esm/components/MainMenu/MenuMobile/MenuMobile.d.ts +2 -0
- package/dist/esm/components/MainMenu/MenuMobile/MenuMobile.js +25 -0
- package/dist/esm/components/MainMenu/MenuMobile/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/MenuMobile/index.js +1 -0
- package/dist/esm/components/MainMenu/MenuMobile/styles.module.css +23 -0
- package/dist/esm/components/MainMenu/Search/SearchDesktop/SearchDesktop.d.ts +2 -0
- package/dist/esm/components/MainMenu/Search/SearchDesktop/SearchDesktop.js +12 -0
- package/dist/esm/components/MainMenu/Search/SearchDesktop/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/Search/SearchDesktop/index.js +1 -0
- package/dist/esm/components/MainMenu/Search/SearchDesktop/styles.module.css +17 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/SearchMobile.d.ts +2 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/SearchMobile.js +36 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/constants.d.ts +4 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/constants.js +4 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/hooks.d.ts +12 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/hooks.js +34 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/index.js +1 -0
- package/dist/esm/components/MainMenu/Search/SearchMobile/styles.module.css +57 -0
- package/dist/esm/components/MainMenu/Search/SearchSettingsButton/SearchSettingsButton.d.ts +4 -0
- package/dist/esm/components/MainMenu/Search/SearchSettingsButton/SearchSettingsButton.js +7 -0
- package/dist/esm/components/MainMenu/Search/SearchSettingsButton/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/Search/SearchSettingsButton/index.js +1 -0
- package/dist/esm/components/MainMenu/Search/SearchSettingsButton/styles.module.css +11 -0
- package/dist/esm/components/MainMenu/Search/index.d.ts +3 -0
- package/dist/esm/components/MainMenu/Search/index.js +3 -0
- package/dist/esm/components/MainMenu/Search/types.d.ts +14 -0
- package/dist/esm/components/MainMenu/Search/types.js +1 -0
- package/dist/esm/components/MainMenu/Search/useSearch.d.ts +8 -0
- package/dist/esm/components/MainMenu/Search/useSearch.js +161 -0
- package/dist/esm/components/MainMenu/hooks.d.ts +10 -0
- package/dist/esm/components/MainMenu/hooks.js +101 -0
- package/dist/esm/components/MainMenu/index.d.ts +4 -0
- package/dist/esm/components/MainMenu/index.js +4 -0
- package/dist/esm/components/MainMenu/styles.module.css +28 -0
- package/dist/esm/components/MainMenu/types.d.ts +49 -0
- package/dist/esm/components/MainMenu/types.js +1 -0
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.js +6 -0
- package/dist/esm/components/PathBreadcrumbs/index.d.ts +1 -0
- package/dist/esm/components/PathBreadcrumbs/index.js +1 -0
- package/dist/esm/components/PathBreadcrumbs/styles.module.css +5 -0
- package/dist/esm/components/PlatformLogo/Container.d.ts +12 -0
- package/dist/esm/components/PlatformLogo/Container.js +20 -0
- package/dist/esm/components/PlatformLogo/index.d.ts +4 -0
- package/dist/esm/components/PlatformLogo/index.js +6 -0
- package/dist/esm/components/PlatformLogo/styles.module.css +11 -0
- package/dist/esm/components/UserMenu/UserMenu.d.ts +14 -0
- package/dist/esm/components/UserMenu/UserMenu.js +48 -0
- package/dist/esm/components/UserMenu/hooks/useLogoutItem.d.ts +6 -0
- package/dist/esm/components/UserMenu/hooks/useLogoutItem.js +18 -0
- package/dist/esm/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
- package/dist/esm/components/UserMenu/hooks/useProfileItem.js +23 -0
- package/dist/esm/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
- package/dist/esm/components/UserMenu/hooks/useThemeItem.js +72 -0
- package/dist/esm/components/UserMenu/hooks/useUserMenuItems.d.ts +13 -0
- package/dist/esm/components/UserMenu/hooks/useUserMenuItems.js +39 -0
- package/dist/esm/components/UserMenu/index.d.ts +2 -0
- package/dist/esm/components/UserMenu/index.js +2 -0
- package/dist/esm/components/UserMenu/styles.module.css +21 -0
- package/dist/esm/components/UserMenu/types.d.ts +20 -0
- package/dist/esm/components/UserMenu/types.js +5 -0
- package/dist/esm/components/index.d.ts +6 -0
- package/dist/esm/components/index.js +6 -0
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useLocalStorage.d.ts +1 -0
- package/dist/esm/hooks/useLocalStorage.js +10 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/package.json +68 -0
- package/src/components/HeaderLayout/HeaderLayout.tsx +46 -0
- package/src/components/HeaderLayout/index.ts +1 -0
- package/src/components/HeaderLayout/styles.module.scss +38 -0
- package/src/components/Logo/Logo.tsx +93 -0
- package/src/components/Logo/index.ts +1 -0
- package/src/components/Logo/styles.module.scss +30 -0
- package/src/components/MainMenu/Content/Content.tsx +137 -0
- package/src/components/MainMenu/Content/index.ts +1 -0
- package/src/components/MainMenu/Content/styles.module.scss +35 -0
- package/src/components/MainMenu/MainMenu.tsx +51 -0
- package/src/components/MainMenu/MenuDesktop/MenuDesktop.tsx +120 -0
- package/src/components/MainMenu/MenuDesktop/index.ts +1 -0
- package/src/components/MainMenu/MenuDesktop/styles.module.scss +108 -0
- package/src/components/MainMenu/MenuMobile/MenuMobile.tsx +83 -0
- package/src/components/MainMenu/MenuMobile/index.ts +1 -0
- package/src/components/MainMenu/MenuMobile/styles.module.scss +26 -0
- package/src/components/MainMenu/Search/SearchDesktop/SearchDesktop.tsx +46 -0
- package/src/components/MainMenu/Search/SearchDesktop/index.ts +1 -0
- package/src/components/MainMenu/Search/SearchDesktop/styles.module.scss +21 -0
- package/src/components/MainMenu/Search/SearchMobile/SearchMobile.tsx +102 -0
- package/src/components/MainMenu/Search/SearchMobile/constants.ts +4 -0
- package/src/components/MainMenu/Search/SearchMobile/hooks.ts +43 -0
- package/src/components/MainMenu/Search/SearchMobile/index.ts +1 -0
- package/src/components/MainMenu/Search/SearchMobile/styles.module.scss +72 -0
- package/src/components/MainMenu/Search/SearchSettingsButton/SearchSettingsButton.tsx +22 -0
- package/src/components/MainMenu/Search/SearchSettingsButton/index.ts +1 -0
- package/src/components/MainMenu/Search/SearchSettingsButton/styles.module.scss +13 -0
- package/src/components/MainMenu/Search/index.ts +3 -0
- package/src/components/MainMenu/Search/types.ts +20 -0
- package/src/components/MainMenu/Search/useSearch.tsx +212 -0
- package/src/components/MainMenu/hooks.tsx +135 -0
- package/src/components/MainMenu/index.ts +4 -0
- package/src/components/MainMenu/styles.module.scss +28 -0
- package/src/components/MainMenu/types.ts +62 -0
- package/src/components/PathBreadcrumbs/PathBreadcrumbs.tsx +21 -0
- package/src/components/PathBreadcrumbs/index.ts +1 -0
- package/src/components/PathBreadcrumbs/styles.module.scss +10 -0
- package/src/components/PlatformLogo/Container.tsx +32 -0
- package/src/components/PlatformLogo/index.ts +8 -0
- package/src/components/PlatformLogo/styles.module.scss +13 -0
- package/src/components/UserMenu/UserMenu.tsx +138 -0
- package/src/components/UserMenu/hooks/useLogoutItem.tsx +28 -0
- package/src/components/UserMenu/hooks/useProfileItem.tsx +41 -0
- package/src/components/UserMenu/hooks/useThemeItem.tsx +116 -0
- package/src/components/UserMenu/hooks/useUserMenuItems.ts +77 -0
- package/src/components/UserMenu/index.ts +2 -0
- package/src/components/UserMenu/styles.module.scss +21 -0
- package/src/components/UserMenu/types.ts +24 -0
- package/src/components/index.ts +6 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useLocalStorage.ts +15 -0
- package/src/index.ts +2 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.HEADER_LOGO_MODE = void 0;
|
|
18
|
+
exports.Logo = Logo;
|
|
19
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
20
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
21
|
+
const react_1 = require("react");
|
|
22
|
+
const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
|
|
23
|
+
const skeleton_1 = require("@snack-uikit/skeleton");
|
|
24
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
25
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
26
|
+
exports.HEADER_LOGO_MODE = {
|
|
27
|
+
develop: 'develop',
|
|
28
|
+
stage: 'stage',
|
|
29
|
+
hybrid: 'hybrid',
|
|
30
|
+
prod: 'prod',
|
|
31
|
+
};
|
|
32
|
+
function Logo(_a) {
|
|
33
|
+
var { path, loading, mode, href, onClick, className } = _a, rest = __rest(_a, ["path", "loading", "mode", "href", "onClick", "className"]);
|
|
34
|
+
const [error, setError] = (0, react_1.useState)(false);
|
|
35
|
+
(0, react_1.useEffect)(() => {
|
|
36
|
+
setError(false);
|
|
37
|
+
}, [path, loading]);
|
|
38
|
+
const logo = (0, react_1.useMemo)(() => {
|
|
39
|
+
if (path && !error) {
|
|
40
|
+
return ((0, jsx_runtime_1.jsx)("img", { src: path, alt: 'logo', className: styles_module_scss_1.default.logoImg, onLoad: () => {
|
|
41
|
+
setError(false);
|
|
42
|
+
}, onError: () => {
|
|
43
|
+
setError(true);
|
|
44
|
+
} }));
|
|
45
|
+
}
|
|
46
|
+
if (mode === exports.HEADER_LOGO_MODE.develop) {
|
|
47
|
+
return (0, jsx_runtime_1.jsx)(uikit_product_icons_1.CloudLogoDevSVG, { size: 64 });
|
|
48
|
+
}
|
|
49
|
+
if (mode === exports.HEADER_LOGO_MODE.stage) {
|
|
50
|
+
return (0, jsx_runtime_1.jsx)(uikit_product_icons_1.CloudLogoStageSVG, { size: 74 });
|
|
51
|
+
}
|
|
52
|
+
if (mode === exports.HEADER_LOGO_MODE.hybrid) {
|
|
53
|
+
return (0, jsx_runtime_1.jsx)(uikit_product_icons_1.CloudLogoHybridSVG, { size: 78 });
|
|
54
|
+
}
|
|
55
|
+
return (0, jsx_runtime_1.jsx)(uikit_product_icons_1.CloudLogoSVG, { size: 24 });
|
|
56
|
+
}, [error, mode, path]);
|
|
57
|
+
if (loading) {
|
|
58
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.skeletonWrapper, children: (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { width: 24, height: 24, loading: true, borderRadius: 4 }) }));
|
|
59
|
+
}
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)("a", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.logo, className), href: href, tabIndex: 0, onClick: onClick }, (0, utils_1.extractDataTestProps)(rest), { children: logo })));
|
|
61
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Logo';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Logo"), exports);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
a.logo{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-shrink:0;
|
|
4
|
+
padding:var(--dimension-1m, 8px);
|
|
5
|
+
cursor:pointer;
|
|
6
|
+
border-radius:var(--dimension-050m, 4px);
|
|
7
|
+
min-width:40px;
|
|
8
|
+
box-sizing:border-box;
|
|
9
|
+
max-height:40px;
|
|
10
|
+
min-height:40px;
|
|
11
|
+
align-items:center;
|
|
12
|
+
}
|
|
13
|
+
a.logo:focus-visible{
|
|
14
|
+
outline-width:var(--border-state-focus-s-border-width, 2px);
|
|
15
|
+
outline-style:var(--border-state-focus-s-border-style, solid);
|
|
16
|
+
outline-color:var(--border-state-focus-s-border-color, );
|
|
17
|
+
outline-color:var(--sys-available-complementary, #1c1c24);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.skeletonWrapper{
|
|
21
|
+
padding:var(--dimension-1m, 8px);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.logoImg{
|
|
25
|
+
width:auto;
|
|
26
|
+
max-height:24px;
|
|
27
|
+
min-height:24px;
|
|
28
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { LinksGroup } from '../types';
|
|
3
|
+
export type ContentProps = {
|
|
4
|
+
searchValue?: string;
|
|
5
|
+
serviceGroups?: LinksGroup[];
|
|
6
|
+
search?: ReactNode;
|
|
7
|
+
banners?: ReactNode;
|
|
8
|
+
cards?: ReactElement[];
|
|
9
|
+
footer?: ReactNode;
|
|
10
|
+
favorite?: {
|
|
11
|
+
value: string[];
|
|
12
|
+
onChange: (productId: string) => (addingValue: boolean) => void;
|
|
13
|
+
};
|
|
14
|
+
isMobile?: boolean;
|
|
15
|
+
initialEmpty?: boolean;
|
|
16
|
+
className?: string;
|
|
17
|
+
onLinkChange?: (value: string) => void;
|
|
18
|
+
onClose?(): void;
|
|
19
|
+
};
|
|
20
|
+
export declare function Content({ searchValue, banners, search, serviceGroups, className, footer, favorite, isMobile, onClose, onLinkChange, }: ContentProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Content = Content;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const uikit_product_card_predefined_1 = require("@sbercloud/uikit-product-card-predefined");
|
|
10
|
+
const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
|
|
11
|
+
const uikit_product_title_clickable_1 = require("@sbercloud/uikit-product-title-clickable");
|
|
12
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
13
|
+
function Content({ searchValue, banners, search, serviceGroups, className, footer, favorite, isMobile, onClose, onLinkChange, }) {
|
|
14
|
+
const { t } = (0, uikit_product_locale_1.useLocale)('Header');
|
|
15
|
+
const wrappedClick = (0, react_1.useCallback)(({ disabled, onClick }, cb) => (e) => {
|
|
16
|
+
if (disabled) {
|
|
17
|
+
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!(e === null || e === void 0 ? void 0 : e.metaKey)) {
|
|
21
|
+
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
22
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
23
|
+
}
|
|
24
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
25
|
+
cb === null || cb === void 0 ? void 0 : cb();
|
|
26
|
+
}, [onClose]);
|
|
27
|
+
const cards = (0, react_1.useMemo)(() => serviceGroups === null || serviceGroups === void 0 ? void 0 : serviceGroups.map(({ id, label, items }) => ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.card, id: id, "data-test-id": `header__drawer-menu__group-card-${id}`, children: [!label.onClick ? ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.cardTitle, children: label.text })) : ((0, jsx_runtime_1.jsx)(uikit_product_title_clickable_1.TitleClickable, { title: label.text, href: '#', onClick: label.onClick })), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.cardBody, "data-mobile": isMobile || undefined, children: items.map(service => ((0, jsx_runtime_1.jsx)(uikit_product_card_predefined_1.CardServiceSmall, { title: service.label, emblem: { icon: service.icon }, "data-test-id": `header__drawer-menu__link-${service.id}`, outline: true, href: service.href, onClick: wrappedClick(service, () => onLinkChange === null || onLinkChange === void 0 ? void 0 : onLinkChange(service.id)), favorite: favorite
|
|
28
|
+
? {
|
|
29
|
+
checked: favorite === null || favorite === void 0 ? void 0 : favorite.value.includes(service.id),
|
|
30
|
+
onChange: favorite === null || favorite === void 0 ? void 0 : favorite.onChange(service.id),
|
|
31
|
+
visibilityStrategy: isMobile ? 'always' : 'hover',
|
|
32
|
+
enabled: !service.disabled,
|
|
33
|
+
}
|
|
34
|
+
: undefined, promoBadge: service.badge }, String(id) + service.id))) })] }, String(id)))), [favorite, isMobile, onLinkChange, serviceGroups, wrappedClick]);
|
|
35
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(Boolean(serviceGroups === null || serviceGroups === void 0 ? void 0 : serviceGroups.length) || searchValue) && search, (0, jsx_runtime_1.jsxs)("div", { className: className, children: [!searchValue && banners, cards, !(cards === null || cards === void 0 ? void 0 : cards.length) && !searchValue && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.noData, "data-test-id": 'header__drawer-menu__no-data', children: t('noData') })), !(cards === null || cards === void 0 ? void 0 : cards.length) && searchValue && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.noData, "data-test-id": 'header__drawer-menu__no-data-found', children: t('noDataFound') })), footer] })] }));
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Content';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Content"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.card{
|
|
2
|
+
background-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
3
|
+
display:flex;
|
|
4
|
+
flex-direction:column;
|
|
5
|
+
padding:var(--dimension-2m, 16px);
|
|
6
|
+
gap:var(--dimension-1m, 8px);
|
|
7
|
+
border-radius:var(--dimension-1m, 8px);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cardTitle{
|
|
11
|
+
font-family:var(--sans-title-m-font-family, SB Sans Interface);
|
|
12
|
+
font-weight:var(--sans-title-m-font-weight, Semibold);
|
|
13
|
+
line-height:var(--sans-title-m-line-height, 24px);
|
|
14
|
+
font-size:var(--sans-title-m-font-size, 16px);
|
|
15
|
+
letter-spacing:var(--sans-title-m-letter-spacing, 0.15px);
|
|
16
|
+
paragraph-spacing:var(--sans-title-m-paragraph-spacing, 8.8px);
|
|
17
|
+
color:var(--sys-neutral-text-main, #41424e);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.cardBody{
|
|
21
|
+
display:grid;
|
|
22
|
+
grid-template-columns:repeat(2, minmax(150px, 1fr));
|
|
23
|
+
gap:var(--dimension-1m, 8px);
|
|
24
|
+
}
|
|
25
|
+
.cardBody[data-mobile]{
|
|
26
|
+
grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.noData{
|
|
30
|
+
font-family:var(--sans-body-l-font-family, SB Sans Interface);
|
|
31
|
+
font-weight:var(--sans-body-l-font-weight, Regular);
|
|
32
|
+
line-height:var(--sans-body-l-line-height, 24px);
|
|
33
|
+
font-size:var(--sans-body-l-font-size, 16px);
|
|
34
|
+
letter-spacing:var(--sans-body-l-letter-spacing, 0.1px);
|
|
35
|
+
paragraph-spacing:var(--sans-body-l-paragraph-spacing, 8.8px);
|
|
36
|
+
color:var(--sys-neutral-text-light, #8b8e9b);
|
|
37
|
+
display:flex;
|
|
38
|
+
justify-content:center;
|
|
39
|
+
padding:var(--dimension-2m, 16px);
|
|
40
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { MainMenuProps } from './types';
|
|
2
|
+
export declare function MainMenu({ open: openProp, setOpen: setOpenProp, settingItems, leftTop, rightTop, serviceGroups, favorite, search, isMobile, onLinkChange, disabled, }: MainMenuProps & {
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MainMenu = MainMenu;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
|
|
6
|
+
const button_1 = require("@snack-uikit/button");
|
|
7
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
8
|
+
const MenuDesktop_1 = require("./MenuDesktop");
|
|
9
|
+
const MenuMobile_1 = require("./MenuMobile");
|
|
10
|
+
function MainMenu({ open: openProp, setOpen: setOpenProp, settingItems, leftTop, rightTop, serviceGroups, favorite, search, isMobile, onLinkChange, disabled, }) {
|
|
11
|
+
const [open = false, setOpen] = (0, utils_1.useValueControl)({ value: openProp, onChange: setOpenProp });
|
|
12
|
+
const MenuComponent = isMobile ? MenuMobile_1.MenuMobile : MenuDesktop_1.MenuDesktop;
|
|
13
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(button_1.ButtonFunction, { disabled: disabled, size: 'm', icon: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.MainMenuSVG, {}), onClick: () => {
|
|
14
|
+
setOpen(true);
|
|
15
|
+
}, "data-test-id": 'header__drawer-menu-button' }), (0, jsx_runtime_1.jsx)(MenuComponent, { onLinkChange: onLinkChange, settingItems: settingItems, serviceGroups: serviceGroups, search: search, leftTop: leftTop, rightTop: rightTop, favorite: favorite, open: open, setOpen: setOpen })] }));
|
|
16
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MenuDesktop = MenuDesktop;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const drawer_1 = require("@snack-uikit/drawer");
|
|
11
|
+
const list_1 = require("@snack-uikit/list");
|
|
12
|
+
const scroll_1 = require("@snack-uikit/scroll");
|
|
13
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
14
|
+
const Content_1 = require("../Content");
|
|
15
|
+
const hooks_1 = require("../hooks");
|
|
16
|
+
const Search_1 = require("../Search");
|
|
17
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
18
|
+
function MenuDesktop({ open: openProp, setOpen: setOpenProp, settingItems, leftTop, rightTop, serviceGroups, favorite, search, onLinkChange, }) {
|
|
19
|
+
const [open = false, setOpen] = (0, utils_1.useValueControl)({ value: openProp, onChange: setOpenProp });
|
|
20
|
+
const { groupItems, scrollRef, searchRef, resultItems } = (0, hooks_1.useMenuItems)({
|
|
21
|
+
serviceGroups,
|
|
22
|
+
search,
|
|
23
|
+
favorite,
|
|
24
|
+
});
|
|
25
|
+
const isInitialEmptyCards = (serviceGroups === null || serviceGroups === void 0 ? void 0 : serviceGroups.length) === 0;
|
|
26
|
+
const isNeedRightBlock = rightTop || !isInitialEmptyCards;
|
|
27
|
+
const settingItemsWithClassName = settingItems.filter(list_1.isBaseItemProps).map(item => (Object.assign(Object.assign({}, item), { className: styles_module_scss_1.default.item })));
|
|
28
|
+
const groupItemsWithClass = (0, react_1.useMemo)(() => groupItems.map(item => (Object.assign(Object.assign({}, item), { className: styles_module_scss_1.default.item }))), [groupItems]);
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(drawer_1.DrawerCustom, { open: open, onClose: () => {
|
|
30
|
+
setOpen(false);
|
|
31
|
+
}, size: isNeedRightBlock ? 'm' : 's', position: 'left', className: styles_module_scss_1.default.drawer, rootClassName: styles_module_scss_1.default.drawerRoot, "data-test-id": 'header__drawer-menu', "data-small": !isNeedRightBlock || undefined, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.menu, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.left, "data-test-id": 'header__drawer-menu__left', children: [leftTop && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.leftTop, children: leftTop }), !isInitialEmptyCards && ((0, jsx_runtime_1.jsx)(list_1.List, { items: groupItemsWithClass, pinBottom: settingItemsWithClassName, scroll: true, size: 'm', barHideStrategy: 'never', className: styles_module_scss_1.default.list })), !leftTop && isInitialEmptyCards && (0, jsx_runtime_1.jsx)("div", {}), isInitialEmptyCards && settingItemsWithClassName.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.list, styles_module_scss_1.default.halfList), children: (0, jsx_runtime_1.jsx)(list_1.List, { items: settingItems.filter(list_1.isBaseItemProps).map(item => (Object.assign(Object.assign({}, item), { className: styles_module_scss_1.default.item }))), size: 'm', barHideStrategy: 'never' }) }))] }), isNeedRightBlock && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.right, "data-test-id": 'header__drawer-menu__right', children: (0, jsx_runtime_1.jsxs)(scroll_1.Scroll, { paddingAbsolute: true, className: styles_module_scss_1.default.scroll, ref: scrollRef, barHideStrategy: 'never', children: [isInitialEmptyCards && rightTop && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bannersWrap, children: rightTop }), !isInitialEmptyCards && ((0, jsx_runtime_1.jsx)(Content_1.Content, { onClose: () => {
|
|
32
|
+
setOpen(false);
|
|
33
|
+
}, className: styles_module_scss_1.default.rightContent, search: search && (0, jsx_runtime_1.jsx)(Search_1.SearchDesktop, Object.assign({}, search, { ref: searchRef })), searchValue: search && search.searchValue, banners: rightTop, favorite: favorite, serviceGroups: resultItems, onLinkChange: onLinkChange }))] }) }))] }) }));
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MenuDesktop';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MenuDesktop"), exports);
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
.drawer [data-test-id=drawer__close-button]{
|
|
2
|
+
display:none;
|
|
3
|
+
}
|
|
4
|
+
.drawer svg{
|
|
5
|
+
fill:currentColor;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.scroll{
|
|
9
|
+
padding:28px 28px 0 12px;
|
|
10
|
+
box-sizing:border-box;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.left{
|
|
14
|
+
display:flex;
|
|
15
|
+
flex-direction:column;
|
|
16
|
+
padding:32px 16px 24px 32px;
|
|
17
|
+
gap:16px;
|
|
18
|
+
justify-content:space-between;
|
|
19
|
+
position:relative;
|
|
20
|
+
box-sizing:border-box;
|
|
21
|
+
width:272px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.drawerRoot [data-test-id=header__drawer-menu][data-small]{
|
|
25
|
+
width:316px;
|
|
26
|
+
}
|
|
27
|
+
.drawerRoot [data-test-id=header__drawer-menu][data-small] .left{
|
|
28
|
+
width:316px;
|
|
29
|
+
}
|
|
30
|
+
.drawerRoot [data-test-id=header__drawer-menu]:not([data-small]){
|
|
31
|
+
min-width:744px;
|
|
32
|
+
overflow:hidden;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.leftTop{
|
|
36
|
+
display:flex;
|
|
37
|
+
flex-direction:column;
|
|
38
|
+
gap:var(--dimension-1m, 8px);
|
|
39
|
+
flex-grow:1;
|
|
40
|
+
min-height:var(--dimension-7m, 56px);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.right{
|
|
44
|
+
display:flex;
|
|
45
|
+
flex-direction:column;
|
|
46
|
+
height:100dvh;
|
|
47
|
+
flex:1;
|
|
48
|
+
min-width:0;
|
|
49
|
+
position:relative;
|
|
50
|
+
}
|
|
51
|
+
.right::before{
|
|
52
|
+
content:"";
|
|
53
|
+
position:absolute;
|
|
54
|
+
top:32px;
|
|
55
|
+
left:0;
|
|
56
|
+
background-color:var(--sys-neutral-decor-default, #dde0ea);
|
|
57
|
+
width:1px;
|
|
58
|
+
bottom:24px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.rightContent{
|
|
62
|
+
display:flex;
|
|
63
|
+
flex-direction:column;
|
|
64
|
+
gap:8px;
|
|
65
|
+
padding:4px;
|
|
66
|
+
padding-bottom:24px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.menu{
|
|
70
|
+
display:flex;
|
|
71
|
+
height:100%;
|
|
72
|
+
box-sizing:border-box;
|
|
73
|
+
background-color:var(--sys-neutral-background, #eeeff3);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.list{
|
|
77
|
+
margin-left:-31px !important;
|
|
78
|
+
margin-right:-16px !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.halfList{
|
|
82
|
+
border-top:1px solid var(--sys-neutral-decor-default, #dde0ea);
|
|
83
|
+
padding-top:8px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.item{
|
|
87
|
+
padding-left:22px !important;
|
|
88
|
+
box-sizing:border-box;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.bannersWrap{
|
|
92
|
+
padding:var(--dimension-050m, 4px);
|
|
93
|
+
padding-top:var(--dimension-025m, 2px);
|
|
94
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MenuMobile = MenuMobile;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
|
|
9
|
+
const uikit_product_mobile_drawer_1 = require("@sbercloud/uikit-product-mobile-drawer");
|
|
10
|
+
const list_1 = require("@snack-uikit/list");
|
|
11
|
+
const scroll_1 = require("@snack-uikit/scroll");
|
|
12
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
13
|
+
const Content_1 = require("../Content");
|
|
14
|
+
const hooks_1 = require("../hooks");
|
|
15
|
+
const Search_1 = require("../Search");
|
|
16
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
17
|
+
function MenuMobile({ open: openProp, setOpen: setOpenProp, settingItems, leftTop, rightTop, serviceGroups, favorite, search, onLinkChange, }) {
|
|
18
|
+
const [open = false, setOpen] = (0, utils_1.useValueControl)({ value: openProp, onChange: setOpenProp });
|
|
19
|
+
const { t } = (0, uikit_product_locale_1.useLocale)('Header');
|
|
20
|
+
const isInitialEmptyCards = (serviceGroups === null || serviceGroups === void 0 ? void 0 : serviceGroups.length) === 0;
|
|
21
|
+
const { searchRef, resultItems } = (0, hooks_1.useMenuItems)({
|
|
22
|
+
serviceGroups,
|
|
23
|
+
search,
|
|
24
|
+
favorite,
|
|
25
|
+
});
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)(uikit_product_mobile_drawer_1.MobileDrawerCustom, { open: open, onClose: () => {
|
|
27
|
+
setOpen(false);
|
|
28
|
+
}, className: styles_module_scss_1.default.drawerMobile, swipeEnabled: false, "data-test-id": 'header__drawer-menu-mobile', closeOnPopstate: true, children: [(0, jsx_runtime_1.jsx)(uikit_product_mobile_drawer_1.MobileDrawerCustom.Header, { title: t('navigation') }), (0, jsx_runtime_1.jsx)(scroll_1.Scroll, { barHideStrategy: 'never', children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.scrollMobile, children: [top && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.rightContent, children: leftTop }), !isInitialEmptyCards && ((0, jsx_runtime_1.jsx)(Content_1.Content, { isMobile: true, onClose: () => {
|
|
29
|
+
setOpen(false);
|
|
30
|
+
}, onLinkChange: onLinkChange, search: search && (0, jsx_runtime_1.jsx)(Search_1.SearchMobile, Object.assign({}, search, { ref: searchRef })), className: styles_module_scss_1.default.rightContent, searchValue: search && search.searchValue, banners: rightTop, favorite: favorite, serviceGroups: resultItems })), isInitialEmptyCards && rightTop && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bannersWrap, children: rightTop }), settingItems.length > 0 && ((0, jsx_runtime_1.jsx)(list_1.List, { className: styles_module_scss_1.default.settings, items: [{ type: 'group', items: [], divider: true }, ...settingItems.filter(list_1.isBaseItemProps)], size: 'm', barHideStrategy: 'never' }))] }) })] }));
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MenuMobile';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MenuMobile"), exports);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.rightContent{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
gap:var(--dimension-1m, 8px);
|
|
5
|
+
padding-top:4px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.drawerMobile{
|
|
9
|
+
background-color:var(--sys-neutral-background, #eeeff3) !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.scrollMobile{
|
|
13
|
+
padding:var(--dimension-2m, 16px);
|
|
14
|
+
padding-top:0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.bannersWrap{
|
|
18
|
+
margin-top:var(--dimension-1m, 8px);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.settings{
|
|
22
|
+
margin-top:var(--dimension-1m, 8px);
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SearchDesktop = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
|
|
10
|
+
const chips_1 = require("@snack-uikit/chips");
|
|
11
|
+
const search_1 = require("@snack-uikit/search");
|
|
12
|
+
const SearchSettingsButton_1 = require("../SearchSettingsButton");
|
|
13
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
14
|
+
exports.SearchDesktop = (0, react_1.forwardRef)(({ searchValue, searchFn, searchFunctions, onChangeSearchFn, onSearchValueChange }, ref) => {
|
|
15
|
+
const { t } = (0, uikit_product_locale_1.useLocale)('Header');
|
|
16
|
+
const [areSearchSettingsVisible, setAreSearchSettingsVisible] = (0, react_1.useState)(false);
|
|
17
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.searchItem, ref: ref, children: [(0, jsx_runtime_1.jsx)(search_1.Search, { size: 'm', outline: true, placeholder: t('searchByServices'), value: searchValue, onChange: onSearchValueChange, "data-test-id": 'header__drawer-menu__search', className: styles_module_scss_1.default.search, postfix: (0, jsx_runtime_1.jsx)(SearchSettingsButton_1.SearchSettingsButton, { onClick: () => setAreSearchSettingsVisible(prevOpen => !prevOpen) }) }), areSearchSettingsVisible && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.searchSettingsChips, children: searchFunctions.map(item => ((0, jsx_runtime_1.jsx)(chips_1.ChipToggle, { label: item.label, checked: searchFn === item.id, onChange: () => onChangeSearchFn(item.id), "data-test-id": `header__drawer-menu__search-option-${item.id}`, size: 'xs' }, item.id))) }))] }));
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SearchDesktop';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./SearchDesktop"), exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.searchItem{
|
|
2
|
+
position:sticky;
|
|
3
|
+
z-index:1;
|
|
4
|
+
top:0;
|
|
5
|
+
background-color:var(--sys-neutral-background, #eeeff3);
|
|
6
|
+
padding:4px;
|
|
7
|
+
padding-bottom:var(--dimension-1m, 8px);
|
|
8
|
+
display:flex;
|
|
9
|
+
flex-direction:column;
|
|
10
|
+
gap:var(--dimension-1m, 8px);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.searchSettingsChips{
|
|
14
|
+
display:flex;
|
|
15
|
+
flex-direction:row;
|
|
16
|
+
gap:var(--dimension-050m, 4px);
|
|
17
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SearchMobile = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
|
|
10
|
+
const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
|
|
11
|
+
const uikit_product_mobile_modal_1 = require("@sbercloud/uikit-product-mobile-modal");
|
|
12
|
+
const button_1 = require("@snack-uikit/button");
|
|
13
|
+
const list_1 = require("@snack-uikit/list");
|
|
14
|
+
const search_1 = require("@snack-uikit/search");
|
|
15
|
+
const typography_1 = require("@snack-uikit/typography");
|
|
16
|
+
const SearchSettingsButton_1 = require("../SearchSettingsButton");
|
|
17
|
+
const constants_1 = require("./constants");
|
|
18
|
+
const hooks_1 = require("./hooks");
|
|
19
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
20
|
+
exports.SearchMobile = (0, react_1.forwardRef)(({ searchValue, searchFn, searchFunctions, onChangeSearchFn, onSearchValueChange }, ref) => {
|
|
21
|
+
const { t } = (0, uikit_product_locale_1.useLocale)('Header');
|
|
22
|
+
const [areSearchSettingsVisible, setAreSearchSettingsVisible] = (0, react_1.useState)(false);
|
|
23
|
+
const { searchRef: newSearchRef, animationState, toggleSearchActive, isSearchActive, searchInputTabIndex, } = (0, hooks_1.useSearchAnimation)();
|
|
24
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.searchItem, ref: ref, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.searchWrap, style: {
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
'--sc-header-animation-enter': constants_1.SEARCH_TRANSITION_TIMEOUT.enter,
|
|
28
|
+
'--sc-header-animation-exit': constants_1.SEARCH_TRANSITION_TIMEOUT.exit,
|
|
29
|
+
}, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography.SansTitleM, { children: t('services') }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.searchMobile, "data-transition-status": animationState.status, "data-is-mounted": animationState.isMounted || undefined, children: [(0, jsx_runtime_1.jsx)(search_1.Search, { size: 'm', placeholder: t('searchByServices'), value: searchValue, onChange: onSearchValueChange, "data-test-id": 'header__drawer-menu__search', ref: newSearchRef, tabIndex: searchInputTabIndex, postfix: (0, jsx_runtime_1.jsx)(SearchSettingsButton_1.SearchSettingsButton, { onClick: () => setAreSearchSettingsVisible(true) }) }), (0, jsx_runtime_1.jsxs)(uikit_product_mobile_modal_1.MobileModalCustom, { open: areSearchSettingsVisible, onClose: () => setAreSearchSettingsVisible(false), closeOnPopstate: true, closeButtonEnabled: true, children: [(0, jsx_runtime_1.jsx)(uikit_product_mobile_modal_1.MobileModalCustom.Header, { title: t('searchSettingsMobileModalHeader') }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.searchModalBody, children: (0, jsx_runtime_1.jsx)(list_1.List, { className: styles_module_scss_1.default.searchSettingsMobileOptions, items: searchFunctions.map(item => ({
|
|
30
|
+
id: item.id,
|
|
31
|
+
content: {
|
|
32
|
+
option: item.label,
|
|
33
|
+
},
|
|
34
|
+
})), size: 'm', selection: {
|
|
35
|
+
mode: 'single',
|
|
36
|
+
value: searchFn,
|
|
37
|
+
onChange: value => {
|
|
38
|
+
onChangeSearchFn(value);
|
|
39
|
+
setAreSearchSettingsVisible(false);
|
|
40
|
+
},
|
|
41
|
+
} }) })] })] }), (0, jsx_runtime_1.jsx)(button_1.ButtonElevated, { size: 'm', className: styles_module_scss_1.default.searchButton, icon: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.SearchSVG, {}), onClick: toggleSearchActive, "data-test-id": 'header__drawer-menu__close-search-icon', "data-search-active": isSearchActive || undefined })] }) }));
|
|
42
|
+
});
|