@gravity-ui/navigation 3.2.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
 
3
3
  var React = require('react');
4
4
  var uikit = require('@gravity-ui/uikit');
5
- var index = require('./index-Chqso-oJ.js');
5
+ var index = require('./index-9bMDuiin.js');
6
6
  require('@bem-react/classname');
7
7
  require('@gravity-ui/icons');
8
8
  require('@gravity-ui/uikit/i18n');
@@ -66,4 +66,4 @@ const TopAlert = ({ alert, className, mobileView = false }) => {
66
66
  };
67
67
 
68
68
  exports.TopAlert = TopAlert;
69
- //# sourceMappingURL=index-CJmG1jdh.js.map
69
+ //# sourceMappingURL=index-BsT7DcU0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CJmG1jdh.js","sources":["../../../src/components/TopAlert/useTopAlertHeight.ts","../../../src/components/TopAlert/TopAlert.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {TopAlertProps} from '../types';\n\ntype TopAlertHeightControls = {\n alertRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nexport const useTopAlertHeight = ({alert}: {alert?: TopAlertProps}): TopAlertHeightControls => {\n const alertRef = React.useRef<HTMLDivElement>(null);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-top-alert-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n setAsideTopPanelHeight(alertRef.current?.clientHeight || 0);\n }, [setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (alert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [alert, alertRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n alertRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert, Text} from '@gravity-ui/uikit';\n\nimport {TopAlertProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport {useTopAlertHeight} from './useTopAlertHeight';\n\nimport './TopAlert.scss';\n\nconst b = block('top-alert');\n\ntype Props = {\n alert?: TopAlertProps;\n className?: string;\n mobileView?: boolean;\n};\n\nexport const TopAlert = ({alert, className, mobileView = false}: Props) => {\n const {alertRef, updateTopSize} = useTopAlertHeight({alert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n alert?.onCloseTopAlert?.();\n }, [alert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!alert || !alert.message) {\n return null;\n }\n\n return (\n <div\n ref={alertRef}\n className={b('wrapper', {'with-bottom-border': !mobileView && opened}, className)}\n >\n {opened && (\n <Alert\n className={b('', {\n centered: alert.centered,\n dense: alert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n align={alert.align}\n theme={alert.theme || 'warning'}\n view={alert.view}\n icon={alert.icon}\n title={alert.title}\n message={\n mobileView ? (\n <Text ellipsisLines={5} variant=\"body-2\">\n {alert.message}\n </Text>\n ) : (\n alert.message\n )\n }\n actions={alert.actions}\n onClose={alert.closable ? handleClose : undefined}\n />\n )}\n </div>\n );\n};\n"],"names":["debounceFn","block","Alert","Text"],"mappings":"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"}
1
+ {"version":3,"file":"index-BsT7DcU0.js","sources":["../../../src/components/TopAlert/useTopAlertHeight.ts","../../../src/components/TopAlert/TopAlert.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {TopAlertProps} from '../types';\n\ntype TopAlertHeightControls = {\n alertRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nexport const useTopAlertHeight = ({alert}: {alert?: TopAlertProps}): TopAlertHeightControls => {\n const alertRef = React.useRef<HTMLDivElement>(null);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-top-alert-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n setAsideTopPanelHeight(alertRef.current?.clientHeight || 0);\n }, [setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (alert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [alert, alertRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n alertRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert, Text} from '@gravity-ui/uikit';\n\nimport {TopAlertProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport {useTopAlertHeight} from './useTopAlertHeight';\n\nimport './TopAlert.scss';\n\nconst b = block('top-alert');\n\ntype Props = {\n alert?: TopAlertProps;\n className?: string;\n mobileView?: boolean;\n};\n\nexport const TopAlert = ({alert, className, mobileView = false}: Props) => {\n const {alertRef, updateTopSize} = useTopAlertHeight({alert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n alert?.onCloseTopAlert?.();\n }, [alert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!alert || !alert.message) {\n return null;\n }\n\n return (\n <div\n ref={alertRef}\n className={b('wrapper', {'with-bottom-border': !mobileView && opened}, className)}\n >\n {opened && (\n <Alert\n className={b('', {\n centered: alert.centered,\n dense: alert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n align={alert.align}\n theme={alert.theme || 'warning'}\n view={alert.view}\n icon={alert.icon}\n title={alert.title}\n message={\n mobileView ? (\n <Text ellipsisLines={5} variant=\"body-2\">\n {alert.message}\n </Text>\n ) : (\n alert.message\n )\n }\n actions={alert.actions}\n onClose={alert.closable ? handleClose : undefined}\n />\n )}\n </div>\n );\n};\n"],"names":["debounceFn","block","Alert","Text"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Chqso-oJ.js');
3
+ var index = require('./index-9bMDuiin.js');
4
4
  require('react');
5
5
  require('@bem-react/classname');
6
6
  require('@gravity-ui/uikit');
@@ -0,0 +1,8 @@
1
+ import type { SettingsDescription } from '../collect-settings';
2
+ export declare function useAllResultsPage({ pages, handlePageChange, }: {
3
+ pages: SettingsDescription['pages'];
4
+ handlePageChange: (page: string | undefined) => void;
5
+ }): {
6
+ isAllSearchPage: (page: string | undefined) => page is "allSearchResults";
7
+ };
8
+ export declare function getSettingsDescriptionWithAllResultsPage(settingsDescription: SettingsDescription): SettingsDescription;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { TextInputSize } from '@gravity-ui/uikit';
3
+ import { SettingsSelection } from '../Selection/types';
3
4
  interface SettingsSearchProps {
4
5
  className?: string;
5
6
  initialValue?: string;
@@ -9,6 +10,7 @@ interface SettingsSearchProps {
9
10
  inputSize?: TextInputSize;
10
11
  placeholder?: string;
11
12
  autoFocus?: boolean;
13
+ selection?: SettingsSelection;
12
14
  }
13
- export declare function SettingsSearch({ className, initialValue, onChange, debounce, inputRef, inputSize, placeholder, autoFocus, }: SettingsSearchProps): React.JSX.Element;
15
+ export declare function SettingsSearch({ className, initialValue, onChange, debounce, inputRef, inputSize, placeholder, autoFocus, selection, }: SettingsSearchProps): React.JSX.Element;
14
16
  export {};
@@ -2,11 +2,11 @@ import React from 'react';
2
2
  import { IconProps } from '@gravity-ui/uikit';
3
3
  import { SettingsSelection } from './Selection/types';
4
4
  export type SettingsMenu = (SettingsMenuGroup | SettingsMenuItem)[];
5
- interface SettingsMenuGroup {
5
+ export interface SettingsMenuGroup {
6
6
  groupTitle: string;
7
7
  items: SettingsMenuItem[];
8
8
  }
9
- interface SettingsMenuItem {
9
+ export interface SettingsMenuItem {
10
10
  id: string;
11
11
  title: string;
12
12
  icon?: IconProps;
@@ -41,10 +41,9 @@ export interface SelectedSettingsPart {
41
41
  section?: SettingsPageSection;
42
42
  setting?: SettingsItem;
43
43
  }
44
- interface SettingsDescription {
44
+ export interface SettingsDescription {
45
45
  menu: SettingsMenu;
46
46
  pages: Record<string, SettingsPage>;
47
47
  }
48
48
  export declare function getSettingsFromChildren(children: React.ReactNode, searchText?: string): SettingsDescription;
49
49
  export declare function getSelectedSettingsPart(pages: Record<string, SettingsPage>, selection: SettingsSelection): SelectedSettingsPart;
50
- export {};
@@ -1,6 +1,6 @@
1
- declare const _default: ((key: "label_title" | "label_filter-placeholder" | "label_empty-placeholder" | "label_search", params?: import("@gravity-ui/i18n").Params) => string) & {
1
+ declare const _default: ((key: "label_title" | "label_filter-placeholder" | "label_empty-placeholder" | "label_search" | "label_all-results", params?: import("@gravity-ui/i18n").Params) => string) & {
2
2
  keysetData: {
3
- "gn-Settings": Record<"label_title" | "label_filter-placeholder" | "label_empty-placeholder" | "label_search", import("@gravity-ui/i18n").KeyData>;
3
+ "gn-Settings": Record<"label_title" | "label_filter-placeholder" | "label_empty-placeholder" | "label_search" | "label_all-results", import("@gravity-ui/i18n").KeyData>;
4
4
  };
5
5
  };
6
6
  export default _default;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import React__default, { useMemo, Suspense, useCallback, useRef, useState, useEffect, Component, createElement, useContext, useLayoutEffect } from 'react';
3
3
  import { withNaming } from '@bem-react/classname';
4
4
  import { Icon, Button, Flex, Text, Tooltip, List, Portal, Popup, ActionTooltip, useForkRef, setRef, Hotkey, TextInput, Loader, Sheet, eventBroker, Menu, DropdownMenu } from '@gravity-ui/uikit';
5
- import { Pin, PinFill, Ellipsis, Gear, Xmark, ArrowLeft } from '@gravity-ui/icons';
5
+ import { Pin, PinFill, Ellipsis, Gear, Xmark, ListUl, ArrowLeft } from '@gravity-ui/icons';
6
6
  import { addComponentKeysets } from '@gravity-ui/uikit/i18n';
7
7
  import ReactDOM from 'react-dom';
8
8
  import { Tabs } from '@gravity-ui/uikit/legacy';
@@ -120,7 +120,7 @@ function styleInject(css, ref) {
120
120
  var css_248z$u = ".g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:56px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:\"\";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.gn-aside-header_compact .gn-aside-header__aside{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:\"\";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:\"\";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button .gn-aside-header__logo-icon-place{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{inset:var(--gn-top-alert-height,0) 0 0;max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:auto;position:fixed;z-index:var(--gn-aside-header-panel-z-index,98)}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__top-alert{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.gn-aside-header__content{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}";
121
121
  styleInject(css_248z$u);
122
122
 
123
- const TopAlert$1 = React__default.lazy(() => import('./index-Dwqi8qed.js').then((module) => ({ default: module.TopAlert })));
123
+ const TopAlert$1 = React__default.lazy(() => import('./index-KqwJsh5S.js').then((module) => ({ default: module.TopAlert })));
124
124
  const Layout = ({ compact, className, children, topAlert }) => {
125
125
  const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
126
126
  const asideHeaderContextValue = useMemo(() => ({ size, compact }), [compact, size]);
@@ -4674,6 +4674,123 @@ function HotkeysPanel(_a) {
4674
4674
  React__default.createElement(DrawerItem, { id: "hotkeys", visible: visible, className: b$e('drawer-item', drawerItemClassName), content: drawerItemContent })));
4675
4675
  }
4676
4676
 
4677
+ /**
4678
+ * Gets the last element of `array`.
4679
+ *
4680
+ * @static
4681
+ * @memberOf _
4682
+ * @since 0.1.0
4683
+ * @category Array
4684
+ * @param {Array} array The array to query.
4685
+ * @returns {*} Returns the last element of `array`.
4686
+ * @example
4687
+ *
4688
+ * _.last([1, 2, 3]);
4689
+ * // => 3
4690
+ */
4691
+
4692
+ var last_1;
4693
+ var hasRequiredLast;
4694
+
4695
+ function requireLast () {
4696
+ if (hasRequiredLast) return last_1;
4697
+ hasRequiredLast = 1;
4698
+ function last(array) {
4699
+ var length = array == null ? 0 : array.length;
4700
+ return length ? array[length - 1] : undefined;
4701
+ }
4702
+
4703
+ last_1 = last;
4704
+ return last_1;
4705
+ }
4706
+
4707
+ var lastExports = requireLast();
4708
+ var last = /*@__PURE__*/getDefaultExportFromCjs(lastExports);
4709
+
4710
+ var label_title$1 = "Settings";
4711
+ var label_search$1 = "Search";
4712
+ var en$1 = {
4713
+ label_title: label_title$1,
4714
+ "label_filter-placeholder": "Search settings",
4715
+ "label_empty-placeholder": "No results found",
4716
+ label_search: label_search$1,
4717
+ "label_all-results": "All results"
4718
+ };
4719
+
4720
+ var label_title = "Настройки";
4721
+ var label_search = "Поиск";
4722
+ var ru$1 = {
4723
+ label_title: label_title,
4724
+ "label_filter-placeholder": "Найти настройки",
4725
+ "label_empty-placeholder": "Ничего не найдено",
4726
+ label_search: label_search,
4727
+ "label_all-results": "Все результаты"
4728
+ };
4729
+
4730
+ const COMPONENT$1 = 'Settings';
4731
+ var i18n$1 = addComponentKeysets({ en: en$1, ru: ru$1 }, `${NAMESPACE}${COMPONENT$1}`);
4732
+
4733
+ const allSearchResultsId = 'allSearchResults';
4734
+ const allSearchResultsLabel = i18n$1('label_all-results');
4735
+ function useAllResultsPage({ pages, handlePageChange, }) {
4736
+ const allSearchResultsPage = pages[allSearchResultsId];
4737
+ const hasAllSearchResultsPage = Boolean(allSearchResultsPage);
4738
+ React__default.useEffect(() => {
4739
+ if (hasAllSearchResultsPage) {
4740
+ handlePageChange(allSearchResultsId);
4741
+ }
4742
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4743
+ }, [hasAllSearchResultsPage]);
4744
+ return {
4745
+ isAllSearchPage: (page) => page === allSearchResultsId,
4746
+ };
4747
+ }
4748
+ function getSettingsDescriptionWithAllResultsPage(settingsDescription) {
4749
+ const { menu, pages } = settingsDescription;
4750
+ const menuWithoutAllResults = getMenuWithoutAllResults(menu);
4751
+ const pagesList = Object.values(pages);
4752
+ return Object.assign(Object.assign({}, settingsDescription), { menu: [createAllResultsMenuItem(), ...menuWithoutAllResults], pages: Object.assign(Object.assign({}, pages), { [allSearchResultsId]: createAllResultsPage(pagesList, menuWithoutAllResults) }) });
4753
+ }
4754
+ function getMenuWithoutAllResults(menu) {
4755
+ return menu.filter((item) => !('id' in item) || item.id !== allSearchResultsId);
4756
+ }
4757
+ function createAllResultsPage(pages, menu) {
4758
+ const breadcrumbsMap = {};
4759
+ for (const menuItem of menu) {
4760
+ if ('items' in menuItem) {
4761
+ for (const pageItem of menuItem.items) {
4762
+ breadcrumbsMap[pageItem.id] = [menuItem.groupTitle, pageItem.title];
4763
+ }
4764
+ }
4765
+ else {
4766
+ breadcrumbsMap[menuItem.id] = [menuItem.title];
4767
+ }
4768
+ }
4769
+ return {
4770
+ id: allSearchResultsId,
4771
+ sections: Object.values(pages)
4772
+ .map((page) => {
4773
+ return page.sections.map((section) => {
4774
+ var _a;
4775
+ const breadcrumbs = (_a = breadcrumbsMap[page.id]) !== null && _a !== undefined ? _a : [];
4776
+ const lastBreadcrumb = last(breadcrumbs);
4777
+ const breadcrumbsTitlePart = breadcrumbs.join(' / ');
4778
+ return Object.assign(Object.assign({}, section), { title: section.title === lastBreadcrumb
4779
+ ? breadcrumbsTitlePart
4780
+ : `${breadcrumbsTitlePart} / ${section.title}` });
4781
+ });
4782
+ })
4783
+ .flat(),
4784
+ };
4785
+ }
4786
+ function createAllResultsMenuItem() {
4787
+ return {
4788
+ id: allSearchResultsId,
4789
+ title: allSearchResultsLabel,
4790
+ icon: { data: ListUl },
4791
+ };
4792
+ }
4793
+
4677
4794
  function useStableCallback(func) {
4678
4795
  const funcRef = React.useRef();
4679
4796
  React.useEffect(() => {
@@ -4707,7 +4824,13 @@ function getSettingsFromChildren(children, searchText = '') {
4707
4824
  // 'abc def fg' -> abc.*?cde.*?fg
4708
4825
  const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
4709
4826
  const filterRe = new RegExp(preparedFilter, 'i');
4710
- return getSettingsFromChildrenRecursive(children, '', filterRe);
4827
+ const result = getSettingsFromChildrenRecursive(children, '', filterRe);
4828
+ if (Boolean(preparedFilter) && result.menu.length > 0) {
4829
+ return getSettingsDescriptionWithAllResultsPage(result);
4830
+ }
4831
+ else {
4832
+ return result;
4833
+ }
4711
4834
  }
4712
4835
  function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
4713
4836
  const menu = [];
@@ -4737,11 +4860,13 @@ function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
4737
4860
  const hasInnerGroup = menuFragment.some((item) => 'groupTitle' in item);
4738
4861
  invariant(!hasInnerGroup, `Group ${element.props.groupTitle} should not include groups`);
4739
4862
  }
4740
- menu.push({
4741
- groupTitle: element.props.groupTitle,
4742
- // @ts-ignore
4743
- items: menuFragment,
4744
- });
4863
+ if (menuFragment.length > 0) {
4864
+ menu.push({
4865
+ groupTitle: element.props.groupTitle,
4866
+ // @ts-ignore
4867
+ items: menuFragment,
4868
+ });
4869
+ }
4745
4870
  Object.assign(pages, pagesFragment);
4746
4871
  }
4747
4872
  else {
@@ -4754,13 +4879,15 @@ function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
4754
4879
  }
4755
4880
  pages[pageId] = getSettingsPageFromChildren(element.props.children, filterRe);
4756
4881
  pages[pageId].id = pageId;
4757
- menu.push({
4758
- id: pageId,
4759
- title: element.props.title,
4760
- icon: element.props.icon,
4761
- withBadge: pages[pageId].withBadge,
4762
- disabled: pages[pageId].hidden,
4763
- });
4882
+ if (!pages[pageId].hidden) {
4883
+ menu.push({
4884
+ id: pageId,
4885
+ title: element.props.title,
4886
+ icon: element.props.icon,
4887
+ withBadge: pages[pageId].withBadge,
4888
+ disabled: pages[pageId].hidden,
4889
+ });
4890
+ }
4764
4891
  }
4765
4892
  });
4766
4893
  return { menu, pages };
@@ -4911,7 +5038,7 @@ function isSectionSelected(selected, pageId, section) {
4911
5038
  }
4912
5039
  }
4913
5040
 
4914
- var css_248z$c = ".gn-settings-menu__group-heading{display:inline-block;font-weight:var(--g-text-accent-font-weight);line-height:18px;margin-bottom:12px;padding:0 20px}.gn-settings-menu__group+.gn-settings-menu__group{margin-top:24px}.gn-settings-menu__item{align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;height:40px;padding:0 20px}.gn-settings-menu__item-icon{color:var(--g-color-text-misc);margin-right:5px}.gn-settings-menu__item:hover,.gn-settings-menu__item_focused{background:var(--g-color-base-simple-hover)}.gn-settings-menu__item_selected{background:var(--g-color-base-selection)}.gn-settings-menu__item_selected.gn-settings-menu__item_focused,.gn-settings-menu__item_selected:hover{background:var(--g-color-base-selection-hover)}.gn-settings-menu__item_disabled{color:var(--g-color-text-secondary);cursor:auto}.gn-settings-menu__item_disabled:hover{background:none}.gn-settings-menu__item_disabled .gn-settings-menu__item-icon{color:var(--g-color-base-misc-heavy)}.gn-settings-menu__item_badge{position:relative}.gn-settings-menu__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:9px;top:calc(50% - 3px);width:6px}";
5041
+ var css_248z$c = ".gn-settings-menu__group-heading{display:inline-block;font-weight:var(--g-text-accent-font-weight);line-height:18px;margin-bottom:12px;padding:0 20px}.gn-settings-menu__group+.gn-settings-menu__group{margin-top:24px}.gn-settings-menu__item+.gn-settings-menu__group{margin-top:8px}.gn-settings-menu__item{align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;height:40px;padding:0 20px}.gn-settings-menu__item-icon{color:var(--g-color-text-misc);margin-right:5px}.gn-settings-menu__item:hover,.gn-settings-menu__item_focused{background:var(--g-color-base-simple-hover)}.gn-settings-menu__item_selected{background:var(--g-color-base-selection)}.gn-settings-menu__item_selected.gn-settings-menu__item_focused,.gn-settings-menu__item_selected:hover{background:var(--g-color-base-selection-hover)}.gn-settings-menu__item_disabled{color:var(--g-color-text-secondary);cursor:auto}.gn-settings-menu__item_disabled:hover{background:none}.gn-settings-menu__item_disabled .gn-settings-menu__item-icon{color:var(--g-color-base-misc-heavy)}.gn-settings-menu__item_badge{position:relative}.gn-settings-menu__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:9px;top:calc(50% - 3px);width:6px}";
4915
5042
  styleInject(css_248z$c);
4916
5043
 
4917
5044
  const b$d = block('settings-menu');
@@ -5016,35 +5143,23 @@ const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
5016
5143
  React__default.createElement(Tabs, { items: tabItems, className: b$c(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
5017
5144
  };
5018
5145
 
5019
- var label_title$1 = "Settings";
5020
- var label_search$1 = "Search";
5021
- var en$1 = {
5022
- label_title: label_title$1,
5023
- "label_filter-placeholder": "Search settings",
5024
- "label_empty-placeholder": "No results found",
5025
- label_search: label_search$1
5026
- };
5027
-
5028
- var label_title = "Настройки";
5029
- var label_search = "Поиск";
5030
- var ru$1 = {
5031
- label_title: label_title,
5032
- "label_filter-placeholder": "Найти настройки",
5033
- "label_empty-placeholder": "Ничего не найдено",
5034
- label_search: label_search
5035
- };
5036
-
5037
- const COMPONENT$1 = 'Settings';
5038
- var i18n$1 = addComponentKeysets({ en: en$1, ru: ru$1 }, `${NAMESPACE}${COMPONENT$1}`);
5039
-
5040
5146
  const b$b = block('settings-search');
5041
- function SettingsSearch({ className, initialValue, onChange, debounce = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
5147
+ function SettingsSearch({ className, initialValue, onChange, debounce = 200, inputRef, inputSize, placeholder, autoFocus = true, selection, }) {
5042
5148
  const [value, setValue] = React__default.useState(initialValue !== null && initialValue !== undefined ? initialValue : '');
5043
- const onChangeDebounced = useStableCallback(debounceFn(onChange, debounce));
5149
+ const onChangeDebounced = debounceFn(onChange, debounce);
5044
5150
  const handleUpdate = useStableCallback((updated) => {
5045
5151
  setValue(updated);
5046
5152
  onChangeDebounced(updated);
5047
5153
  });
5154
+ useEffect(() => {
5155
+ if (value && selection) {
5156
+ onChangeDebounced.cancel();
5157
+ setValue('');
5158
+ onChange('');
5159
+ }
5160
+ // Remove any search, if selection is passed
5161
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5162
+ }, [selection]);
5048
5163
  return (React__default.createElement("div", { className: b$b(null, className) },
5049
5164
  React__default.createElement(TextInput, { value: value, controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate, controlProps: {
5050
5165
  'aria-label': i18n$1('label_search'),
@@ -5078,7 +5193,7 @@ const getPageTitleById = (menu, activePage) => {
5078
5193
  return '';
5079
5194
  };
5080
5195
  function SettingsContent({ initialPage, initialSearch, selection, children, renderNotFound, title = i18n$1('label_title'), filterPlaceholder = i18n$1('label_filter-placeholder'), emptyPlaceholder = i18n$1('label_empty-placeholder'), view, onPageChange, onClose, }) {
5081
- var _a, _b;
5196
+ var _a;
5082
5197
  const { renderSectionRightAdornment, showRightAdornmentOnHover } = useSettingsContext();
5083
5198
  const [search, setSearch] = React__default.useState(initialSearch !== null && initialSearch !== undefined ? initialSearch : '');
5084
5199
  const { menu, pages } = getSettingsFromChildren(children, search);
@@ -5105,17 +5220,21 @@ function SettingsContent({ initialPage, initialSearch, selection, children, rend
5105
5220
  };
5106
5221
  }, []);
5107
5222
  let activePage = selectedPage;
5108
- if (!activePage || ((_a = pages[activePage]) === null || _a === undefined ? undefined : _a.hidden)) {
5109
- activePage = (_b = Object.values(pages).find(({ hidden }) => !hidden)) === null || _b === undefined ? undefined : _b.id;
5223
+ if (!activePage || !pages[activePage] || pages[activePage].hidden) {
5224
+ activePage = (_a = Object.values(pages).find(({ hidden }) => !hidden)) === null || _a === undefined ? undefined : _a.id;
5110
5225
  }
5111
5226
  const handlePageChange = (newPage) => {
5112
5227
  setCurrentPage((prevPage) => {
5113
- if (prevPage !== newPage) {
5228
+ if (prevPage !== newPage && !isFakePage(newPage)) {
5114
5229
  onPageChange === null || onPageChange === undefined ? undefined : onPageChange(newPage);
5115
5230
  }
5116
5231
  return newPage;
5117
5232
  });
5118
5233
  };
5234
+ const { isAllSearchPage } = useAllResultsPage({ pages, handlePageChange });
5235
+ function isFakePage(page) {
5236
+ return isAllSearchPage(page);
5237
+ }
5119
5238
  React__default.useEffect(() => {
5120
5239
  if (activePage !== selectedPage) {
5121
5240
  handlePageChange(activePage);
@@ -5159,7 +5278,7 @@ function SettingsContent({ initialPage, initialSearch, selection, children, rend
5159
5278
  return (React__default.createElement(SettingsSelectionContextProvider, { value: selected },
5160
5279
  React__default.createElement("div", { className: b$a({ view }) },
5161
5280
  isMobile ? (React__default.createElement(React__default.Fragment, null,
5162
- React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b$a('search'), initialValue: initialSearch, onChange: setSearch, autoFocus: false, inputSize: 'xl' }),
5281
+ React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b$a('search'), initialValue: initialSearch, selection: selection, onChange: setSearch, autoFocus: false, inputSize: 'xl' }),
5163
5282
  React__default.createElement(SettingsMenuMobile, { items: menu, onChange: handlePageChange, activeItemId: activePage, className: b$a('tabs') }))) : (React__default.createElement("div", { className: b$a('menu'), onClick: () => {
5164
5283
  if (searchInputRef.current) {
5165
5284
  searchInputRef.current.focus();
@@ -5172,7 +5291,7 @@ function SettingsContent({ initialPage, initialSearch, selection, children, rend
5172
5291
  }
5173
5292
  } },
5174
5293
  React__default.createElement(Title, null, title),
5175
- React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b$a('search'), initialValue: initialSearch, onChange: setSearch, placeholder: filterPlaceholder, autoFocus: true }),
5294
+ React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b$a('search'), initialValue: initialSearch, selection: selection, onChange: setSearch, placeholder: filterPlaceholder, autoFocus: true }),
5176
5295
  React__default.createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItemId: activePage }))),
5177
5296
  React__default.createElement("div", { className: b$a('page') }, renderPageContent(activePage)))));
5178
5297
  }
@@ -5386,10 +5505,10 @@ const OverlapPanel = ({ title, renderContent, className, onClose, action, closeT
5386
5505
  React__default.createElement("div", { className: b$5('content') }, renderContent()))));
5387
5506
  };
5388
5507
 
5389
- var css_248z$4 = ".gn-mobile-header{--mobile-header-min-heigth:50px;--mobile-header-icon-size:20px}.gn-mobile-header,.gn-mobile-header__top-alert{background-color:var(--g-color-base-background)}.gn-mobile-header__top-alert{position:sticky;top:0}.gn-mobile-header__header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);box-sizing:border-box;display:flex;justify-content:space-between;padding:0 10px;z-index:var(--gn-mobile-header-z-index,100)}.gn-mobile-header__burger{padding:12px}.gn-mobile-header__panel-item{--gn-drawer-item-position:var(--gn-mobile-header-panel-position,absolute)}.gn-mobile-header__burger-menu,.gn-mobile-header__panel-item{background-color:var(--g-color-base-background);max-height:100%;max-width:90vw;width:320px}.gn-mobile-header__user-menu{overflow-y:auto}.gn-mobile-header__overlap-panel,.gn-mobile-header__panels{z-index:var(--gn-mobile-header-panel-z-index,98)}.gn-mobile-header__panels{inset:var(--mobile-header-min-heigth) 0 0;overflow:hidden;position:fixed}.gn-mobile-header__panel-item{top:unset}.gn-mobile-header__content{overflow:auto}";
5508
+ var css_248z$4 = ".gn-mobile-header{--mobile-header-min-heigth:50px;--mobile-header-icon-size:20px;background-color:var(--g-color-base-background)}.gn-mobile-header__header-container{background-color:var(--g-color-base-background);position:sticky;top:0;z-index:var(--gn-mobile-header-z-index,100)}.gn-mobile-header__header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);box-sizing:border-box;display:flex;justify-content:space-between;padding:0 10px}.gn-mobile-header__burger{padding:12px}.gn-mobile-header__panel-item{--gn-drawer-item-position:var(--gn-mobile-header-panel-position,absolute)}.gn-mobile-header__burger-menu,.gn-mobile-header__panel-item{background-color:var(--g-color-base-background);max-height:100%;max-width:90vw;width:320px}.gn-mobile-header__user-menu{overflow-y:auto}.gn-mobile-header__overlap-panel,.gn-mobile-header__panels{z-index:var(--gn-mobile-header-panel-z-index,98)}.gn-mobile-header__panels{inset:var(--mobile-header-min-heigth) 0 0;overflow:hidden;position:fixed}.gn-mobile-header__panel-item{top:unset}.gn-mobile-header__content{overflow:auto}";
5390
5509
  styleInject(css_248z$4);
5391
5510
 
5392
- const TopAlert = React__default.lazy(() => import('./index-Dwqi8qed.js').then((module) => ({ default: module.TopAlert })));
5511
+ const TopAlert = React__default.lazy(() => import('./index-KqwJsh5S.js').then((module) => ({ default: module.TopAlert })));
5393
5512
  const b$4 = block('mobile-header');
5394
5513
  const MobileHeader = React__default.forwardRef(({ logo, burgerMenu, burgerCloseTitle = i18n('burger_button_close'), burgerOpenTitle = i18n('burger_button_open'), panelItems = [], renderContent, sideItemRenderContent, onClosePanel, onEvent, className, contentClassName, overlapPanel, topAlert, }, ref) => {
5395
5514
  const targetRef = useForwardRef(ref);
@@ -5507,7 +5626,7 @@ const MobileHeader = React__default.forwardRef(({ logo, burgerMenu, burgerCloseT
5507
5626
  onOverlapClose,
5508
5627
  ]);
5509
5628
  return (React__default.createElement("div", { className: b$4({ compact }, className), ref: targetRef },
5510
- React__default.createElement("div", { className: b$4('top-alert') },
5629
+ React__default.createElement("div", { className: b$4('header-container') },
5511
5630
  topAlert && (React__default.createElement(Suspense, { fallback: null },
5512
5631
  React__default.createElement(TopAlert, { alert: topAlert, mobileView: true }))),
5513
5632
  React__default.createElement("header", { className: b$4('header'), style: { height: size } },
@@ -5680,4 +5799,4 @@ const MobileFooter = ({ className, menuItems: providedMenuItems, withDivider, mo
5680
5799
  };
5681
5800
 
5682
5801
  export { AsideHeader as A, DrawerItem as D, FooterItem$1 as F, HotkeysPanel as H, Logo as L, MOBILE_HEADER_EVENT_NAMES as M, PageLayout as P, Settings as S, Title as T, AsideHeaderContextProvider as a, block as b, PageLayoutAside as c, debounceFn as d, AsideFallback as e, Drawer as f, PublicActionBar as g, useSettingsSelectionContext as h, useSettingsContext as i, FooterItem as j, getMobileHeaderCustomEvent as k, MobileHeader as l, MobileLogo as m, Footer as n, MobileFooter as o, styleInject as s, useAsideHeaderContext as u };
5683
- //# sourceMappingURL=index-D8I2X2cn.js.map
5802
+ //# sourceMappingURL=index-BSHHbfgh.js.map