@gravity-ui/navigation 1.4.0 → 1.4.2

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/README.md CHANGED
@@ -41,14 +41,14 @@ you may need to switch usage of `AsideHeader` to advanced style with `PageLayout
41
41
  +);
42
42
 
43
43
  - <AsideHeader renderContent={renderContent} {...restProps} />
44
- + <PageLayout reverse>
45
- + <PageLayout.Content>
46
- + <ContentExample />
47
- + </PageLayout.Content>
48
- +
44
+ + <PageLayout>
49
45
  + <Suspense fallback={null}>
50
46
  + <PageLayoutAside {...restProps} />
51
47
  + </Suspense>
48
+ +
49
+ + <PageLayout.Content>
50
+ + <ContentExample />
51
+ + </PageLayout.Content>
52
52
  + </PageLayout>
53
53
  ```
54
54
 
@@ -13,7 +13,7 @@ require('./utils-e82025ce.js');
13
13
  require('./style-inject.es-935afc04.js');
14
14
  require('@bem-react/classname');
15
15
  require('@gravity-ui/uikit');
16
- require('./Item-ff00938b.js');
16
+ require('./Item-eaaec1a7.js');
17
17
  require('@gravity-ui/icons');
18
18
  require('./debounce-8772fd80.js');
19
19
  require('./registerKeyset-f4ce9ee7.js');
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('./tslib.es6-705c6589.js');
6
6
  var React = require('react');
7
7
  var styleInject_es = require('./style-inject.es-935afc04.js');
8
- var Item = require('./Item-ff00938b.js');
8
+ var Item = require('./Item-eaaec1a7.js');
9
9
  var constants = require('./constants-9783dc2d.js');
10
10
  require('@bem-react/classname');
11
11
  require('@gravity-ui/uikit');
@@ -239,15 +239,19 @@ const Item = (props) => {
239
239
  const iconNode = icon ? React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b('icon') }) : null;
240
240
  const titleNode = renderItemTitle(item);
241
241
  const params = { icon: iconNode, title: titleNode };
242
+ let highlightedNode = null;
242
243
  let node;
243
244
  const opts = { compact: Boolean(compact), collapsed: false, item, ref };
244
245
  if (typeof item.itemWrapper === 'function') {
245
246
  node = item.itemWrapper(params, makeNode, opts);
247
+ highlightedNode =
248
+ bringForward &&
249
+ item.itemWrapper(params, ({ icon: iconEl }) => makeIconNode(iconEl), opts);
246
250
  }
247
251
  else {
248
252
  node = makeNode(params);
253
+ highlightedNode = bringForward && makeIconNode(iconNode);
249
254
  }
250
- const highlightedNode = makeIconNode(iconNode);
251
255
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
252
256
  bringForward && (React__default["default"].createElement(HighlightedItem, { iconNode: highlightedNode, iconRef: highlightedRef, onClick: (event) => onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false, event), onClickCapture: onItemClickCapture })),
253
257
  node,
@@ -291,4 +295,4 @@ exports.getItemsMinHeight = getItemsMinHeight;
291
295
  exports.getMoreButtonItem = getMoreButtonItem;
292
296
  exports.getSelectedItemIndex = getSelectedItemIndex;
293
297
  exports.isMenuItem = isMenuItem;
294
- //# sourceMappingURL=Item-ff00938b.js.map
298
+ //# sourceMappingURL=Item-eaaec1a7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Item-eaaec1a7.js","sources":["../../../src/components/CompositeBar/constants.ts","../../../src/components/CompositeBar/utils.ts","../../../src/components/CompositeBar/HighlightedItem/HighlightedItem.tsx","../../../src/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import {PopupPlacement} from '@gravity-ui/uikit';\n\nexport const ITEM_HEIGHT = 40;\nexport const ITEM_TYPE_REGULAR = 'regular';\nexport const COLLAPSE_ITEM_ID = 'collapse-item-id';\n\nexport const POPUP_PLACEMENT: PopupPlacement = ['right-start', 'right-end', 'right'];\nexport const POPUP_ITEM_HEIGHT = 28;\n","import {Ellipsis} from '@gravity-ui/icons';\nimport {MenuItem} from './../types';\nimport {COLLAPSE_ITEM_ID, ITEM_HEIGHT} from './constants';\nimport {CompositeBarItem} from '../CompositeBar/CompositeBar';\n\nexport function getItemHeight(item: CompositeBarItem) {\n if (!isMenuItem(item)) {\n return ITEM_HEIGHT;\n }\n\n switch (item.type) {\n case 'action':\n return 50;\n case 'divider':\n return 15;\n\n default:\n return ITEM_HEIGHT;\n }\n}\n\nexport function getItemsHeight<T extends CompositeBarItem>(items: T[]) {\n return items.reduce((sum, item) => sum + getItemHeight(item), 0);\n}\n\nexport function getSelectedItemIndex(items: MenuItem[]) {\n const index = items.findIndex(({current}) => Boolean(current));\n return index === -1 ? undefined : index;\n}\n\nexport function getPinnedItems(items: MenuItem[]) {\n const pinnedItems: MenuItem[] = [];\n for (const item of items) {\n if (item.pinned) {\n pinnedItems.push(item);\n } else if (item.type === 'divider') {\n if (pinnedItems.length > 0 && pinnedItems[pinnedItems.length - 1].type !== 'divider') {\n pinnedItems.push(item);\n }\n }\n }\n return pinnedItems;\n}\n\nexport function getItemsMinHeight(items: MenuItem[]) {\n const pinnedItems = getPinnedItems(items);\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n\n return (\n getItemsHeight(pinnedItems) +\n getItemsHeight(afterMoreButtonItems) +\n (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT)\n );\n}\n\nexport function getMoreButtonItem(menuMoreTitle?: string): MenuItem {\n return {\n id: COLLAPSE_ITEM_ID,\n title: menuMoreTitle,\n icon: Ellipsis,\n iconSize: 18,\n };\n}\n\nexport function getAutosizeListItems(\n items: MenuItem[],\n height: number,\n collapseItem: MenuItem,\n): {\n listItems: MenuItem[];\n collapseItems: MenuItem[];\n} {\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n const regularItems = items.filter((item) => !item.afterMoreButton);\n const listItems = [...regularItems, ...afterMoreButtonItems];\n\n const allItemsHeight = getItemsHeight(listItems);\n if (allItemsHeight <= height) {\n return {listItems, collapseItems: []};\n }\n\n const collapseItemHeight = getItemHeight(collapseItem);\n\n listItems.splice(regularItems.length, 0, collapseItem);\n const collapseItems: MenuItem[] = [];\n\n let listHeight = allItemsHeight + collapseItemHeight;\n let index = listItems.length;\n while (listHeight > height) {\n if (index === 0) {\n break;\n }\n index--;\n\n const item = listItems[index];\n if (item.pinned || item.id === COLLAPSE_ITEM_ID || item.afterMoreButton) {\n continue;\n }\n if (item.type === 'divider') {\n if (index + 1 < listItems.length && listItems[index + 1]?.type === 'divider') {\n listHeight -= getItemHeight(item);\n listItems.splice(index, 1);\n }\n continue;\n }\n listHeight -= getItemHeight(item);\n collapseItems.unshift(...listItems.splice(index, 1));\n }\n if (\n listItems[index]?.type === 'divider' &&\n (index === 0 || listItems[index - 1]?.type === 'divider')\n ) {\n listItems.splice(index, 1);\n }\n\n return {listItems, collapseItems};\n}\n\nexport function isMenuItem(item: CompositeBarItem): item is MenuItem {\n return (item as MenuItem)?.id !== undefined;\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport debounceFn from 'lodash/debounce';\n\nimport {Portal} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderInnerContext} from '../../AsideHeader/AsideHeaderContext';\nimport {block} from '../../utils/cn';\n\nimport './HighlightedItem.scss';\n\nconst b = block('composite-bar-highlighted-item');\n\ninterface ItemInnerProps {\n iconRef: React.RefObject<HTMLDivElement>;\n iconNode: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n onClickCapture?: (event: React.SyntheticEvent) => void;\n}\n\nconst DEBOUNCE_TIME = 200;\n\nexport const HighlightedItem: React.FC<ItemInnerProps> = ({\n iconRef,\n iconNode,\n onClick,\n onClickCapture,\n}: ItemInnerProps) => {\n const {openModalSubscriber} = useAsideHeaderInnerContext();\n const [{top, left, width, height}, setPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n\n const handleResizeDebounced = useMemo(\n () =>\n debounceFn(\n () => {\n const {\n top = 0,\n left = 0,\n width = 0,\n height = 0,\n } = iconRef?.current?.getBoundingClientRect() || {};\n\n setPosition({\n top: top + window.scrollY,\n left: left + window.scrollX,\n width,\n height,\n });\n },\n DEBOUNCE_TIME,\n {leading: true},\n ),\n [iconRef],\n );\n\n const handleResize = useCallback(() => handleResizeDebounced(), [handleResizeDebounced]);\n\n useEffect(() => {\n if (!isModalOpen) {\n return;\n }\n\n handleResize();\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize, isModalOpen]);\n\n openModalSubscriber?.((open: boolean) => {\n setIsModalOpen(open);\n });\n\n if (!iconNode || !isModalOpen) {\n return null;\n }\n\n return (\n <Portal>\n <div\n className={b()}\n style={{left, top, width, height}}\n onClick={onClick}\n onClickCapture={onClickCapture}\n data-toast\n >\n <div className={b('icon')}>{iconNode}</div>\n </div>\n </Portal>\n );\n};\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import React from 'react';\nimport {block} from '../../utils/cn';\n\nimport {List, Icon, Popup, PopupPlacement, PopupProps, Tooltip} from '@gravity-ui/uikit';\n\nimport {MakeItemParams, MenuItem} from '../../types';\nimport {getSelectedItemIndex} from '../utils';\nimport {ASIDE_HEADER_ICON_SIZE} from '../../constants';\nimport {\n COLLAPSE_ITEM_ID,\n POPUP_ITEM_HEIGHT,\n POPUP_PLACEMENT,\n ITEM_TYPE_REGULAR,\n} from '../constants';\n\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {useAsideHeaderContext} from '../../AsideHeader/AsideHeaderContext';\n\nimport './Item.scss';\n\nconst b = block('composite-bar-item');\n\ninterface ItemPopup {\n popupVisible?: PopupProps['open'];\n popupAnchor?: PopupProps['anchorRef'];\n popupPlacement?: PopupProps['placement'];\n popupOffset?: PopupProps['offset'];\n popupKeepMounted?: PopupProps['keepMounted'];\n renderPopupContent?: () => React.ReactNode;\n onClosePopup?: () => void;\n}\n\nexport interface ItemProps extends ItemPopup {\n item: MenuItem;\n enableTooltip?: boolean;\n onItemClick?: (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => void;\n onItemClickCapture?: (event: React.SyntheticEvent) => void;\n bringForward?: boolean;\n}\n\ninterface ItemInnerProps extends ItemProps {\n className?: string;\n collapseItems?: MenuItem[];\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nfunction renderItemTitle(item: MenuItem) {\n let titleNode = <div className={b('title-text')}>{item.title}</div>;\n\n if (item.rightAdornment) {\n titleNode = (\n <React.Fragment>\n {titleNode}\n <div className={b('title-adornment')}>{item.rightAdornment}</div>\n </React.Fragment>\n );\n }\n\n return titleNode;\n}\n\nexport const defaultPopupPlacement: PopupPlacement = ['right-end'];\nexport const defaultPopupOffset: NonNullable<PopupProps['offset']> = [-20, 8];\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n item,\n className,\n collapseItems,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupAnchor,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onClosePopup,\n onItemClick,\n onItemClickCapture,\n bringForward,\n } = props;\n\n const {compact} = useAsideHeaderContext();\n\n const [open, toggleOpen] = React.useState<boolean>(false);\n\n const ref = React.useRef<HTMLDivElement>(null);\n const anchorRef = popupAnchor || ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = item.type || ITEM_TYPE_REGULAR;\n const current = item.current || false;\n const tooltipText = item.tooltipText || item.title;\n const icon = item.icon;\n const iconSize = item.iconSize || ASIDE_HEADER_ICON_SIZE;\n const collapsedItem = item.id === COLLAPSE_ITEM_ID;\n\n const modifiers: Required<PopupProps>['modifiers'] = React.useMemo(\n () => [\n {\n name: 'compact',\n enabled: true,\n options: {compact},\n phase: 'main',\n fn() {},\n },\n ],\n [compact],\n );\n\n const onClose = React.useCallback(\n (event: MouseEvent | KeyboardEvent) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n onClosePopup?.();\n },\n [onClosePopup],\n );\n\n if (item.type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const makeIconNode = (iconEl: React.ReactNode): React.ReactNode => {\n return compact ? (\n <Tooltip\n content={tooltipText}\n disabled={!enableTooltip || (collapsedItem && open) || popupVisible}\n placement=\"right\"\n className={b('icon-tooltip', {'item-type': type})}\n >\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n </Tooltip>\n ) : (\n iconEl\n );\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const createdNode = (\n <React.Fragment>\n <div\n className={b({type, current, compact}, className)}\n ref={ref}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (collapsedItem) {\n /**\n * If we call onItemClick for collapsedItem then:\n * - User get unexpected item in onItemClick callback\n * - onClosePanel calls twice for each popuped item, as result it will prevent opening of panelItems\n */\n toggleOpen(!open);\n } else {\n onItemClick?.(item, false, event);\n }\n }}\n onClickCapture={onItemClickCapture}\n onMouseEnter={() => {\n if (!compact) {\n onMouseEnter?.();\n }\n }}\n onMouseLeave={() => {\n if (!compact) {\n onMouseLeave?.();\n }\n }}\n >\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div\n className={b('title')}\n title={typeof item.title === 'string' ? item.title : undefined}\n >\n {titleEl}\n </div>\n </div>\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n contentClassName={b('popup')}\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorRef={anchorRef}\n onClose={onClose}\n modifiers={modifiers}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return item.link ? (\n <a href={item.link} className={b('link')}>\n {createdNode}\n </a>\n ) : (\n createdNode\n );\n };\n\n const iconNode = icon ? <Icon data={icon} size={iconSize} className={b('icon')} /> : null;\n const titleNode = renderItemTitle(item);\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item, ref};\n\n if (typeof item.itemWrapper === 'function') {\n node = item.itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (item.itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode);\n }\n\n return (\n <>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>\n onItemClick?.(item, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n {open && collapsedItem && collapseItems?.length && Boolean(anchorRef?.current) && (\n <CollapsedPopup {...props} anchorRef={ref} onClose={() => toggleOpen(false)} />\n )}\n </>\n );\n};\n\nItem.displayName = 'Item';\n\ninterface CollapsedPopupProps {\n anchorRef: React.RefObject<HTMLElement>;\n onClose: () => void;\n}\n\nfunction CollapsedPopup({\n onItemClick,\n collapseItems,\n anchorRef,\n onClose,\n}: ItemInnerProps & CollapsedPopupProps) {\n const {compact} = useAsideHeaderContext();\n return collapseItems?.length ? (\n <Popup placement={POPUP_PLACEMENT} open={true} anchorRef={anchorRef} onClose={onClose}>\n <div className={b('collapse-items-popup-content')}>\n <List\n itemClassName={b('root-collapse-item')}\n items={collapseItems}\n selectedItemIndex={getSelectedItemIndex(collapseItems)}\n itemHeight={POPUP_ITEM_HEIGHT}\n itemsHeight={collapseItems.length * POPUP_ITEM_HEIGHT}\n virtualized={false}\n filterable={false}\n sortable={false}\n onItemClick={onClose}\n renderItem={(collapseItem) => {\n const makeCollapseNode = ({title: titleEl}: MakeItemParams) => {\n const res = (\n <div\n className={b('collapse-item')}\n onClick={(\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n onItemClick?.(collapseItem, true, event);\n }}\n >\n {titleEl}\n </div>\n );\n\n return collapseItem.link ? (\n <a href={collapseItem.link} className={b('link')}>\n {res}\n </a>\n ) : (\n res\n );\n };\n\n const titleNode = renderItemTitle(collapseItem);\n const params = {title: titleNode};\n const opts = {\n compact: Boolean(compact),\n collapsed: true,\n item: collapseItem,\n ref: anchorRef,\n };\n if (typeof collapseItem.itemWrapper === 'function') {\n return collapseItem.itemWrapper(params, makeCollapseNode, opts);\n } else {\n return makeCollapseNode(params);\n }\n }}\n />\n </div>\n </Popup>\n ) : null;\n}\n"],"names":["Ellipsis","b","block","useAsideHeaderInnerContext","useState","useMemo","debounceFn","useCallback","useEffect","React","Portal","useAsideHeaderContext","ASIDE_HEADER_ICON_SIZE","Tooltip","Popup","Icon","List"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var uikit = require('@gravity-ui/uikit');
7
7
  var styleInject_es = require('./style-inject.es-935afc04.js');
8
- var Item = require('./Item-ff00938b.js');
8
+ var Item = require('./Item-eaaec1a7.js');
9
9
  var constants = require('./constants-9783dc2d.js');
10
10
  var AsideHeaderContext = require('./AsideHeaderContext.js');
11
11
  var utils = require('./utils-e82025ce.js');
@@ -11,49 +11,26 @@ var Title = require('./Title-d58ff158.js');
11
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
12
 
13
13
  function _interopNamespace(e) {
14
- if (e && e.__esModule) return e;
15
- var n = Object.create(null);
16
- if (e) {
17
- Object.keys(e).forEach(function (k) {
18
- if (k !== 'default') {
19
- var d = Object.getOwnPropertyDescriptor(e, k);
20
- Object.defineProperty(n, k, d.get ? d : {
21
- enumerable: true,
22
- get: function () { return e[k]; }
14
+ if (e && e.__esModule) return e;
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
23
25
  });
24
- }
25
- });
26
- }
27
- n["default"] = e;
28
- return Object.freeze(n);
26
+ }
27
+ n["default"] = e;
28
+ return Object.freeze(n);
29
29
  }
30
30
 
31
31
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
32
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
33
33
 
34
- /**
35
- * This method returns the first argument it receives.
36
- *
37
- * @static
38
- * @since 0.1.0
39
- * @memberOf _
40
- * @category Util
41
- * @param {*} value Any value.
42
- * @returns {*} Returns `value`.
43
- * @example
44
- *
45
- * var object = { 'a': 1 };
46
- *
47
- * console.log(_.identity(object) === object);
48
- * // => true
49
- */
50
-
51
- function identity(value) {
52
- return value;
53
- }
54
-
55
- var identity_1 = identity;
56
-
57
34
  function useStableCallback(func) {
58
35
  const funcRef = React__namespace.useRef();
59
36
  React__namespace.useEffect(() => {
@@ -83,140 +60,6 @@ function escapeStringForRegExp(input) {
83
60
  return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
84
61
  }
85
62
 
86
- const b$3 = styleInject_es.block('settings-search');
87
- function SettingsSearch({ className, initialValue, onChange, debounce: debounce$1 = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
88
- const [value, setValue] = React__default["default"].useState(initialValue !== null && initialValue !== void 0 ? initialValue : '');
89
- const onChangeDebounced = useStableCallback(debounce.debounce_1(onChange, debounce$1));
90
- const handleUpdate = useStableCallback((updated) => {
91
- setValue(updated);
92
- onChangeDebounced(updated);
93
- });
94
- return (React__default["default"].createElement("div", { className: b$3(null, className) },
95
- React__default["default"].createElement(uikit.TextInput, { value: value, controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate })));
96
- }
97
-
98
- var css_248z$2 = ".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}";
99
- styleInject_es.styleInject(css_248z$2);
100
-
101
- const b$2 = styleInject_es.block('settings-menu');
102
- const SettingsMenu = React__default["default"].forwardRef(
103
- // eslint-disable-next-line prefer-arrow-callback
104
- function SettingsMenu({ items, onChange, activeItemId }, ref) {
105
- const [focusItemId, setFocusId] = React__default["default"].useState();
106
- const containerRef = React__default["default"].useRef(null);
107
- const handleChange = useStableCallback(onChange);
108
- const getFocused = useCurrent(focusItemId);
109
- React__default["default"].useImperativeHandle(ref, () => ({
110
- handleKeyDown(event) {
111
- if (!containerRef.current) {
112
- return false;
113
- }
114
- const focused = getFocused();
115
- if (focused && event.key === 'Enter') {
116
- handleChange(focused);
117
- return true;
118
- }
119
- else if (event.key === 'ArrowDown') {
120
- setFocusId(focusNext(containerRef.current, focused, 1));
121
- return true;
122
- }
123
- else if (event.key === 'ArrowUp') {
124
- setFocusId(focusNext(containerRef.current, focused, -1));
125
- return true;
126
- }
127
- return false;
128
- },
129
- clearFocus() {
130
- setFocusId(undefined);
131
- },
132
- }), [getFocused, handleChange]);
133
- return (React__default["default"].createElement("div", { ref: containerRef, className: b$2() }, items.map((firstLevelItem) => {
134
- if ('groupTitle' in firstLevelItem) {
135
- return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$2('group') },
136
- React__default["default"].createElement("span", { className: b$2('group-heading') }, firstLevelItem.groupTitle),
137
- firstLevelItem.items.map((item) => {
138
- return renderMenuItem(item, onChange, activeItemId, focusItemId);
139
- })));
140
- }
141
- return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
142
- })));
143
- });
144
- function renderMenuItem(item, onChange, activeItemId, focusItemId) {
145
- return (React__default["default"].createElement("span", { key: item.title, className: b$2('item', {
146
- selected: activeItemId === item.id,
147
- disabled: item.disabled,
148
- focused: focusItemId === item.id,
149
- badge: item.withBadge,
150
- }), onClick: () => {
151
- if (!item.disabled) {
152
- onChange(item.id);
153
- }
154
- }, "data-id": item.id },
155
- item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$2('item-icon') })) : undefined,
156
- React__default["default"].createElement("span", null, item.title)));
157
- }
158
- function focusNext(container, focused, direction) {
159
- var _a;
160
- const elements = container.querySelectorAll(`.${b$2('item')}:not(.${b$2('item')}_disabled)`);
161
- if (elements.length === 0) {
162
- return undefined;
163
- }
164
- let currentIndex = direction > 0 ? -1 : 0;
165
- if (focused) {
166
- currentIndex = Array.prototype.findIndex.call(elements, (element) => element.getAttribute('data-id') === focused);
167
- }
168
- currentIndex = (elements.length + currentIndex + direction) % elements.length;
169
- return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
170
- }
171
-
172
- var css_248z$1 = ".gn-settings-menu-mobile.yc-tabs_direction_horizontal{-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:none;scrollbar-width:none}.gn-settings-menu-mobile.yc-tabs_direction_horizontal::-webkit-scrollbar{display:none}.gn-settings-menu-mobile__item_badge{position:relative}.gn-settings-menu-mobile__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:11px;width:6px}";
173
- styleInject_es.styleInject(css_248z$1);
174
-
175
- const b$1 = styleInject_es.block('settings-menu-mobile');
176
- const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
177
- const ref = React__default["default"].useRef(null);
178
- const tabItems = React__default["default"].useMemo(() => {
179
- const tabItems = [];
180
- items.forEach((firstLevelItem) => {
181
- if ('groupTitle' in firstLevelItem) {
182
- tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
183
- id,
184
- title,
185
- disabled,
186
- className: b$1('item', { badge: withBadge }),
187
- })));
188
- }
189
- else {
190
- const { id, title, disabled, withBadge } = firstLevelItem;
191
- tabItems.push({ id, title, disabled, className: b$1('item', { badge: withBadge }) });
192
- }
193
- });
194
- return tabItems;
195
- }, [items]);
196
- const handleTouchMove = (e) => {
197
- e.stopPropagation();
198
- };
199
- return (React__default["default"].createElement("div", { ref: ref, onTouchMove: handleTouchMove },
200
- React__default["default"].createElement(uikit.Tabs, { items: tabItems, className: b$1(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
201
- };
202
-
203
- var label_title$1 = "Settings";
204
- var en = {
205
- label_title: label_title$1,
206
- "label_filter-placeholder": "Search settings",
207
- "label_empty-placeholder": "No results found"
208
- };
209
-
210
- var label_title = "Настройки";
211
- var ru = {
212
- label_title: label_title,
213
- "label_filter-placeholder": "Найти настройки",
214
- "label_empty-placeholder": "Ничего не найдено"
215
- };
216
-
217
- const COMPONENT = 'Settings';
218
- var i18n = registerKeyset.registerKeyset({ en, ru }, COMPONENT);
219
-
220
63
  function getSettingsFromChildren(children, searchText = '') {
221
64
  // 'abc def fg' -> abc.*?cde.*?fg
222
65
  const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
@@ -374,6 +217,163 @@ function useSettingsSelectionContext() {
374
217
  return React__default["default"].useContext(context);
375
218
  }
376
219
 
220
+ /**
221
+ * This method returns the first argument it receives.
222
+ *
223
+ * @static
224
+ * @since 0.1.0
225
+ * @memberOf _
226
+ * @category Util
227
+ * @param {*} value Any value.
228
+ * @returns {*} Returns `value`.
229
+ * @example
230
+ *
231
+ * var object = { 'a': 1 };
232
+ *
233
+ * console.log(_.identity(object) === object);
234
+ * // => true
235
+ */
236
+
237
+ function identity(value) {
238
+ return value;
239
+ }
240
+
241
+ var identity_1 = identity;
242
+
243
+ const b$3 = styleInject_es.block('settings-search');
244
+ function SettingsSearch({ className, initialValue, onChange, debounce: debounce$1 = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
245
+ const [value, setValue] = React__default["default"].useState(initialValue !== null && initialValue !== void 0 ? initialValue : '');
246
+ const onChangeDebounced = useStableCallback(debounce.debounce_1(onChange, debounce$1));
247
+ const handleUpdate = useStableCallback((updated) => {
248
+ setValue(updated);
249
+ onChangeDebounced(updated);
250
+ });
251
+ return (React__default["default"].createElement("div", { className: b$3(null, className) },
252
+ React__default["default"].createElement(uikit.TextInput, { value: value, controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate })));
253
+ }
254
+
255
+ var css_248z$2 = ".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}";
256
+ styleInject_es.styleInject(css_248z$2);
257
+
258
+ const b$2 = styleInject_es.block('settings-menu');
259
+ const SettingsMenu = React__default["default"].forwardRef(
260
+ // eslint-disable-next-line prefer-arrow-callback
261
+ function SettingsMenu({ items, onChange, activeItemId }, ref) {
262
+ const [focusItemId, setFocusId] = React__default["default"].useState();
263
+ const containerRef = React__default["default"].useRef(null);
264
+ const handleChange = useStableCallback(onChange);
265
+ const getFocused = useCurrent(focusItemId);
266
+ React__default["default"].useImperativeHandle(ref, () => ({
267
+ handleKeyDown(event) {
268
+ if (!containerRef.current) {
269
+ return false;
270
+ }
271
+ const focused = getFocused();
272
+ if (focused && event.key === 'Enter') {
273
+ handleChange(focused);
274
+ return true;
275
+ }
276
+ else if (event.key === 'ArrowDown') {
277
+ setFocusId(focusNext(containerRef.current, focused, 1));
278
+ return true;
279
+ }
280
+ else if (event.key === 'ArrowUp') {
281
+ setFocusId(focusNext(containerRef.current, focused, -1));
282
+ return true;
283
+ }
284
+ return false;
285
+ },
286
+ clearFocus() {
287
+ setFocusId(undefined);
288
+ },
289
+ }), [getFocused, handleChange]);
290
+ return (React__default["default"].createElement("div", { ref: containerRef, className: b$2() }, items.map((firstLevelItem) => {
291
+ if ('groupTitle' in firstLevelItem) {
292
+ return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$2('group') },
293
+ React__default["default"].createElement("span", { className: b$2('group-heading') }, firstLevelItem.groupTitle),
294
+ firstLevelItem.items.map((item) => {
295
+ return renderMenuItem(item, onChange, activeItemId, focusItemId);
296
+ })));
297
+ }
298
+ return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
299
+ })));
300
+ });
301
+ function renderMenuItem(item, onChange, activeItemId, focusItemId) {
302
+ return (React__default["default"].createElement("span", { key: item.title, className: b$2('item', {
303
+ selected: activeItemId === item.id,
304
+ disabled: item.disabled,
305
+ focused: focusItemId === item.id,
306
+ badge: item.withBadge,
307
+ }), onClick: () => {
308
+ if (!item.disabled) {
309
+ onChange(item.id);
310
+ }
311
+ }, "data-id": item.id },
312
+ item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$2('item-icon') })) : undefined,
313
+ React__default["default"].createElement("span", null, item.title)));
314
+ }
315
+ function focusNext(container, focused, direction) {
316
+ var _a;
317
+ const elements = container.querySelectorAll(`.${b$2('item')}:not(.${b$2('item')}_disabled)`);
318
+ if (elements.length === 0) {
319
+ return undefined;
320
+ }
321
+ let currentIndex = direction > 0 ? -1 : 0;
322
+ if (focused) {
323
+ currentIndex = Array.prototype.findIndex.call(elements, (element) => element.getAttribute('data-id') === focused);
324
+ }
325
+ currentIndex = (elements.length + currentIndex + direction) % elements.length;
326
+ return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
327
+ }
328
+
329
+ var css_248z$1 = ".gn-settings-menu-mobile.yc-tabs_direction_horizontal{-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:none;scrollbar-width:none}.gn-settings-menu-mobile.yc-tabs_direction_horizontal::-webkit-scrollbar{display:none}.gn-settings-menu-mobile__item_badge{position:relative}.gn-settings-menu-mobile__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:11px;width:6px}";
330
+ styleInject_es.styleInject(css_248z$1);
331
+
332
+ const b$1 = styleInject_es.block('settings-menu-mobile');
333
+ const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
334
+ const ref = React__default["default"].useRef(null);
335
+ const tabItems = React__default["default"].useMemo(() => {
336
+ const tabItems = [];
337
+ items.forEach((firstLevelItem) => {
338
+ if ('groupTitle' in firstLevelItem) {
339
+ tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
340
+ id,
341
+ title,
342
+ disabled,
343
+ className: b$1('item', { badge: withBadge }),
344
+ })));
345
+ }
346
+ else {
347
+ const { id, title, disabled, withBadge } = firstLevelItem;
348
+ tabItems.push({ id, title, disabled, className: b$1('item', { badge: withBadge }) });
349
+ }
350
+ });
351
+ return tabItems;
352
+ }, [items]);
353
+ const handleTouchMove = (e) => {
354
+ e.stopPropagation();
355
+ };
356
+ return (React__default["default"].createElement("div", { ref: ref, onTouchMove: handleTouchMove },
357
+ React__default["default"].createElement(uikit.Tabs, { items: tabItems, className: b$1(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
358
+ };
359
+
360
+ var label_title$1 = "Settings";
361
+ var en = {
362
+ label_title: label_title$1,
363
+ "label_filter-placeholder": "Search settings",
364
+ "label_empty-placeholder": "No results found"
365
+ };
366
+
367
+ var label_title = "Настройки";
368
+ var ru = {
369
+ label_title: label_title,
370
+ "label_filter-placeholder": "Найти настройки",
371
+ "label_empty-placeholder": "Ничего не найдено"
372
+ };
373
+
374
+ const COMPONENT = 'Settings';
375
+ var i18n = registerKeyset.registerKeyset({ en, ru }, COMPONENT);
376
+
377
377
  function isSectionSelected(selected, pageId, section) {
378
378
  var _a;
379
379
  if (!selected.section || selected.setting) {
@@ -568,4 +568,5 @@ function prepareTitle(string, search) {
568
568
 
569
569
  exports.Settings = Settings;
570
570
  exports.useSettingsContext = useSettingsContext;
571
- //# sourceMappingURL=Settings-4b4e8a46.js.map
571
+ exports.useSettingsSelectionContext = useSettingsSelectionContext;
572
+ //# sourceMappingURL=Settings-6db7b88c.js.map