@salutejs/plasma-new-hope 0.175.0-dev.0 → 0.175.1-canary.1497.11552145733.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Combobox/ComboboxNew/Combobox.css +10 -10
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.css +10 -10
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.css +10 -10
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +6 -20
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/{Item.styles_1us8jz1.css → Item.styles_y71664.css} +1 -1
- package/cjs/components/Combobox/ComboboxOld/Combobox.css +28 -14
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxDivider/ComboboxDivider.css +32 -18
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxFooter/ComboboxFooter.css +32 -18
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxGroup/ComboboxGroup.css +32 -18
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxHeader/ComboboxHeader.css +32 -18
- package/cjs/components/Dropdown/Dropdown.css +30 -16
- package/cjs/components/Dropdown/Dropdown.js +60 -37
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.styles.js +14 -26
- package/cjs/components/Dropdown/Dropdown.styles.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.styles_1ix6io8.css +2 -0
- package/cjs/components/Dropdown/Dropdown.tokens.js +24 -1
- package/cjs/components/Dropdown/Dropdown.tokens.js.map +1 -1
- package/cjs/components/Dropdown/FloatingPopover.js +104 -0
- package/cjs/components/Dropdown/FloatingPopover.js.map +1 -0
- package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
- package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.css +46 -6
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +25 -31
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles_17va0nk.css +5 -0
- package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles.js +1 -1
- package/{es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_12e50g5.css → cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_1lyg81y.css} +1 -1
- package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.css +4 -4
- package/cjs/components/Dropdown/utils/getItemByFocused.js +13 -0
- package/cjs/components/Dropdown/utils/getItemByFocused.js.map +1 -0
- package/cjs/components/Dropdown/utils/getItemId.js +10 -0
- package/cjs/components/Dropdown/utils/getItemId.js.map +1 -0
- package/cjs/components/Dropdown/utils/getPlacement.js +16 -0
- package/cjs/components/Dropdown/utils/getPlacement.js.map +1 -0
- package/cjs/components/Dropdown/utils/index.js.map +1 -1
- package/cjs/components/Select/Select.js +1 -1
- package/cjs/components/Select/utils/getCorrectHeight.js.map +1 -1
- package/cjs/hooks/useOutsideClick.js +1 -1
- package/cjs/hooks/useOutsideClick.js.map +1 -1
- package/cjs/index.css +20 -22
- package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +14 -20
- package/emotion/cjs/components/Dropdown/Dropdown.js +58 -37
- package/emotion/cjs/components/Dropdown/Dropdown.styles.js +9 -25
- package/emotion/cjs/components/Dropdown/Dropdown.tokens.js +36 -2
- package/emotion/cjs/components/Dropdown/FloatingPopover.js +109 -0
- package/emotion/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
- package/emotion/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
- package/emotion/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +21 -41
- package/emotion/cjs/components/Dropdown/utils/getItemByFocused.js +12 -0
- package/emotion/cjs/components/Dropdown/utils/getItemId.js +9 -0
- package/emotion/cjs/components/Dropdown/utils/getPlacement.js +15 -0
- package/emotion/cjs/components/Dropdown/utils/index.js +23 -1
- package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +12 -12
- package/emotion/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +5 -5
- package/emotion/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +12 -12
- package/emotion/cjs/examples/plasma_web/components/Dropdown/Dropdown.config.js +5 -5
- package/emotion/cjs/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/emotion/cjs/hooks/useOutsideClick.js +1 -1
- package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +14 -20
- package/emotion/es/components/Dropdown/Dropdown.js +60 -40
- package/emotion/es/components/Dropdown/Dropdown.styles.js +9 -25
- package/emotion/es/components/Dropdown/Dropdown.tokens.js +35 -1
- package/emotion/es/components/Dropdown/FloatingPopover.js +102 -0
- package/emotion/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
- package/emotion/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
- package/emotion/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +22 -42
- package/emotion/es/components/Dropdown/utils/getItemByFocused.js +6 -0
- package/emotion/es/components/Dropdown/utils/getItemId.js +3 -0
- package/emotion/es/components/Dropdown/utils/getPlacement.js +9 -0
- package/emotion/es/components/Dropdown/utils/index.js +4 -1
- package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +12 -12
- package/emotion/es/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +6 -6
- package/emotion/es/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/emotion/es/examples/plasma_web/components/Combobox/Combobox.config.js +12 -12
- package/emotion/es/examples/plasma_web/components/Dropdown/Dropdown.config.js +6 -6
- package/emotion/es/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/emotion/es/hooks/useOutsideClick.js +1 -1
- package/es/components/Combobox/ComboboxNew/Combobox.css +10 -10
- package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.css +10 -10
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.css +10 -10
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +6 -20
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/{Item.styles_1us8jz1.css → Item.styles_y71664.css} +1 -1
- package/es/components/Combobox/ComboboxOld/Combobox.css +28 -14
- package/es/components/Combobox/ComboboxOld/ui/ComboboxDivider/ComboboxDivider.css +32 -18
- package/es/components/Combobox/ComboboxOld/ui/ComboboxFooter/ComboboxFooter.css +32 -18
- package/es/components/Combobox/ComboboxOld/ui/ComboboxGroup/ComboboxGroup.css +32 -18
- package/es/components/Combobox/ComboboxOld/ui/ComboboxHeader/ComboboxHeader.css +32 -18
- package/es/components/Dropdown/Dropdown.css +30 -16
- package/es/components/Dropdown/Dropdown.js +62 -40
- package/es/components/Dropdown/Dropdown.js.map +1 -1
- package/es/components/Dropdown/Dropdown.styles.js +15 -26
- package/es/components/Dropdown/Dropdown.styles.js.map +1 -1
- package/es/components/Dropdown/Dropdown.styles_1ix6io8.css +2 -0
- package/es/components/Dropdown/Dropdown.tokens.js +24 -1
- package/es/components/Dropdown/Dropdown.tokens.js.map +1 -1
- package/es/components/Dropdown/FloatingPopover.js +100 -0
- package/es/components/Dropdown/FloatingPopover.js.map +1 -0
- package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
- package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.css +46 -6
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +24 -29
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles_17va0nk.css +5 -0
- package/es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles.js +1 -1
- package/{cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_12e50g5.css → es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_1lyg81y.css} +1 -1
- package/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.css +4 -4
- package/es/components/Dropdown/utils/getItemByFocused.js +9 -0
- package/es/components/Dropdown/utils/getItemByFocused.js.map +1 -0
- package/es/components/Dropdown/utils/getItemId.js +6 -0
- package/es/components/Dropdown/utils/getItemId.js.map +1 -0
- package/es/components/Dropdown/utils/getPlacement.js +12 -0
- package/es/components/Dropdown/utils/getPlacement.js.map +1 -0
- package/es/components/Dropdown/utils/index.js.map +1 -1
- package/es/components/Select/Select.js +1 -1
- package/es/components/Select/utils/getCorrectHeight.js.map +1 -1
- package/es/hooks/useOutsideClick.js +1 -1
- package/es/hooks/useOutsideClick.js.map +1 -1
- package/es/index.css +20 -22
- package/package.json +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +4 -10
- package/styled-components/cjs/components/Dropdown/Dropdown.js +58 -37
- package/styled-components/cjs/components/Dropdown/Dropdown.styles.js +9 -15
- package/styled-components/cjs/components/Dropdown/Dropdown.tokens.js +36 -2
- package/styled-components/cjs/components/Dropdown/FloatingPopover.js +109 -0
- package/styled-components/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
- package/styled-components/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
- package/styled-components/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +17 -19
- package/styled-components/cjs/components/Dropdown/utils/getItemByFocused.js +12 -0
- package/styled-components/cjs/components/Dropdown/utils/getItemId.js +9 -0
- package/styled-components/cjs/components/Dropdown/utils/getPlacement.js +15 -0
- package/styled-components/cjs/components/Dropdown/utils/index.js +23 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +4 -4
- package/styled-components/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +5 -5
- package/styled-components/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +4 -4
- package/styled-components/cjs/examples/plasma_web/components/Dropdown/Dropdown.config.js +5 -5
- package/styled-components/cjs/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/styled-components/cjs/hooks/useOutsideClick.js +1 -1
- package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
- package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +4 -10
- package/styled-components/es/components/Dropdown/Dropdown.js +60 -40
- package/styled-components/es/components/Dropdown/Dropdown.styles.js +9 -15
- package/styled-components/es/components/Dropdown/Dropdown.tokens.js +35 -1
- package/styled-components/es/components/Dropdown/FloatingPopover.js +102 -0
- package/styled-components/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
- package/styled-components/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
- package/styled-components/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +18 -20
- package/styled-components/es/components/Dropdown/utils/getItemByFocused.js +6 -0
- package/styled-components/es/components/Dropdown/utils/getItemId.js +3 -0
- package/styled-components/es/components/Dropdown/utils/getPlacement.js +9 -0
- package/styled-components/es/components/Dropdown/utils/index.js +4 -1
- package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +4 -4
- package/styled-components/es/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +6 -6
- package/styled-components/es/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.config.js +4 -4
- package/styled-components/es/examples/plasma_web/components/Dropdown/Dropdown.config.js +6 -6
- package/styled-components/es/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
- package/styled-components/es/hooks/useOutsideClick.js +1 -1
- package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts +2 -1
- package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts.map +1 -1
- package/types/components/Dropdown/Dropdown.d.ts +2 -1
- package/types/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/types/components/Dropdown/Dropdown.styles.d.ts +1 -6
- package/types/components/Dropdown/Dropdown.styles.d.ts.map +1 -1
- package/types/components/Dropdown/Dropdown.tokens.d.ts +25 -0
- package/types/components/Dropdown/Dropdown.tokens.d.ts.map +1 -1
- package/types/components/Dropdown/Dropdown.types.d.ts +30 -4
- package/types/components/Dropdown/Dropdown.types.d.ts.map +1 -1
- package/types/components/Dropdown/FloatingPopover.d.ts +5 -0
- package/types/components/Dropdown/FloatingPopover.d.ts.map +1 -0
- package/types/components/Dropdown/index.d.ts +1 -1
- package/types/components/Dropdown/index.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownInner/DropdownInner.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownInner/DropdownInner.type.d.ts +1 -12
- package/types/components/Dropdown/ui/DropdownInner/DropdownInner.type.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownItem/DropdownItem.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownItem/DropdownItem.styles.d.ts +32 -3
- package/types/components/Dropdown/ui/DropdownItem/DropdownItem.styles.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownItem/DropdownItem.type.d.ts +1 -14
- package/types/components/Dropdown/ui/DropdownItem/DropdownItem.type.d.ts.map +1 -1
- package/types/components/Dropdown/utils/getItemByFocused.d.ts +4 -0
- package/types/components/Dropdown/utils/getItemByFocused.d.ts.map +1 -0
- package/types/components/Dropdown/utils/getItemId.d.ts +2 -0
- package/types/components/Dropdown/utils/getItemId.d.ts.map +1 -0
- package/types/components/Dropdown/utils/getPlacement.d.ts +3 -0
- package/types/components/Dropdown/utils/getPlacement.d.ts.map +1 -0
- package/types/components/Dropdown/utils/index.d.ts +3 -0
- package/types/components/Dropdown/utils/index.d.ts.map +1 -1
- package/types/components/Select/utils/getCorrectHeight.d.ts +2 -2
- package/types/components/Select/utils/getCorrectHeight.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Dropdown/Dropdown.config.d.ts +3 -3
- package/types/examples/plasma_b2c/components/Dropdown/Dropdown.config.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Dropdown/Dropdown.d.ts +4 -4
- package/types/examples/plasma_b2c/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Dropdown/Dropdown.config.d.ts +3 -3
- package/types/examples/plasma_web/components/Dropdown/Dropdown.config.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Dropdown/Dropdown.d.ts +4 -4
- package/types/examples/plasma_web/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/types/hooks/useOutsideClick.d.ts +1 -1
- package/types/hooks/useOutsideClick.d.ts.map +1 -1
- package/cjs/components/Dropdown/Dropdown.styles_1tihqkp.css +0 -3
- package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles_blclup.css +0 -6
- package/es/components/Dropdown/Dropdown.styles_1tihqkp.css +0 -3
- package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles_blclup.css +0 -6
@@ -8,30 +8,33 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
8
8
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
9
9
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
10
10
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
11
|
-
import React, { forwardRef, useReducer } from 'react';
|
12
|
-
import {
|
11
|
+
import React, { createContext, forwardRef, useReducer, useRef } from 'react';
|
12
|
+
import { safeUseId } from '@salutejs/plasma-core';
|
13
|
+
import { cx } from '../../utils';
|
14
|
+
import { useOutsideClick } from '../../hooks';
|
13
15
|
import { pathReducer } from './reducers/pathReducer';
|
14
16
|
import { focusedPathReducer } from './reducers/focusedPathReducer';
|
15
17
|
import { DropdownInner } from './ui';
|
16
18
|
import { base as viewCSS } from './variations/_view/base';
|
17
19
|
import { base as sizeCSS } from './variations/_size/base';
|
18
|
-
import { Ul,
|
19
|
-
import { childrenWithProps } from './utils';
|
20
|
+
import { Ul, base } from './Dropdown.styles';
|
21
|
+
import { childrenWithProps, getItemByFocused, getItemId, getPlacement } from './utils';
|
20
22
|
import { classes } from './Dropdown.tokens';
|
21
23
|
import { useKeyNavigation } from './hooks/useKeyboardNavigation';
|
22
24
|
import { useHashMaps } from './hooks/useHashMaps';
|
25
|
+
import { FloatingPopover } from './FloatingPopover';
|
26
|
+
export var Context = /*#__PURE__*/createContext({});
|
23
27
|
|
24
28
|
/**
|
25
29
|
* Выпадающий список.
|
26
30
|
*/
|
27
31
|
export var dropdownRoot = function dropdownRoot(Root) {
|
28
32
|
return /*#__PURE__*/forwardRef(function (_ref, ref) {
|
33
|
+
var _getItemByFocused;
|
29
34
|
var items = _ref.items,
|
30
35
|
children = _ref.children,
|
31
|
-
|
32
|
-
|
33
|
-
_ref$offset = _ref.offset,
|
34
|
-
offset = _ref$offset === void 0 ? [0, 0] : _ref$offset,
|
36
|
+
placement = _ref.placement,
|
37
|
+
offset = _ref.offset,
|
35
38
|
_ref$closeOnOverlayCl = _ref.closeOnOverlayClick,
|
36
39
|
closeOnOverlayClick = _ref$closeOnOverlayCl === void 0 ? true : _ref$closeOnOverlayCl,
|
37
40
|
onToggle = _ref.onToggle,
|
@@ -68,6 +71,25 @@ export var dropdownRoot = function dropdownRoot(Root) {
|
|
68
71
|
_useHashMaps2 = _slicedToArray(_useHashMaps, 2),
|
69
72
|
pathMap = _useHashMaps2[0],
|
70
73
|
focusedToValueMap = _useHashMaps2[1];
|
74
|
+
var activeDescendantItemValue = ((_getItemByFocused = getItemByFocused(focusedPath, focusedToValueMap)) === null || _getItemByFocused === void 0 ? void 0 : _getItemByFocused.value) || '';
|
75
|
+
var floatingPopoverRef = useRef(null);
|
76
|
+
var treeId = safeUseId();
|
77
|
+
|
78
|
+
// Логика работы при клике за пределами выпадающего списка
|
79
|
+
var targetRef = useOutsideClick(function (event) {
|
80
|
+
if (!isCurrentListOpen || !closeOnOverlayClick) {
|
81
|
+
return;
|
82
|
+
}
|
83
|
+
dispatchPath({
|
84
|
+
type: 'reset'
|
85
|
+
});
|
86
|
+
dispatchFocusedPath({
|
87
|
+
type: 'reset'
|
88
|
+
});
|
89
|
+
if (onToggle) {
|
90
|
+
onToggle(false, event);
|
91
|
+
}
|
92
|
+
}, floatingPopoverRef);
|
71
93
|
var handleGlobalToggle = function handleGlobalToggle(opened, event) {
|
72
94
|
if (opened) {
|
73
95
|
dispatchPath({
|
@@ -99,66 +121,64 @@ export var dropdownRoot = function dropdownRoot(Root) {
|
|
99
121
|
}),
|
100
122
|
onKeyDown = _useKeyNavigation.onKeyDown;
|
101
123
|
var isCurrentListOpen = Boolean(path[0]);
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
124
|
+
return /*#__PURE__*/React.createElement(Context.Provider, {
|
125
|
+
value: {
|
126
|
+
focusedPath: focusedPath,
|
127
|
+
size: size,
|
128
|
+
variant: variant,
|
129
|
+
itemRole: itemRole,
|
130
|
+
handleGlobalToggle: handleGlobalToggle,
|
131
|
+
closeOnSelect: closeOnSelect,
|
132
|
+
onHover: onHover,
|
133
|
+
onItemClick: onItemClick,
|
134
|
+
onItemSelect: onItemSelect,
|
135
|
+
hasArrow: hasArrow,
|
136
|
+
treeId: treeId
|
137
|
+
}
|
138
|
+
}, /*#__PURE__*/React.createElement(FloatingPopover, {
|
139
|
+
ref: floatingPopoverRef,
|
110
140
|
opened: isCurrentListOpen,
|
111
141
|
onToggle: handleGlobalToggle,
|
142
|
+
placement: getPlacement(placement),
|
112
143
|
offset: offset,
|
113
|
-
|
144
|
+
portal: portal,
|
114
145
|
trigger: trigger,
|
115
|
-
closeOnOverlayClick: closeOnOverlayClick,
|
116
|
-
isFocusTrapped: false,
|
117
146
|
target: childrenWithProps(children, {
|
118
147
|
role: 'combobox',
|
119
|
-
'aria-controls':
|
148
|
+
'aria-controls': "".concat(treeId, "_tree_level_1"),
|
120
149
|
'aria-expanded': isCurrentListOpen,
|
121
|
-
'aria-activedescendant':
|
150
|
+
'aria-activedescendant': activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue.toString()) : '',
|
122
151
|
onKeyDown: onKeyDown
|
123
|
-
})
|
124
|
-
preventOverflow: false,
|
125
|
-
usePortal: Boolean(portal),
|
126
|
-
frame: portal
|
152
|
+
})
|
127
153
|
}, /*#__PURE__*/React.createElement(Root, _extends({
|
128
154
|
className: cx(className, classes.dropdownRoot),
|
129
155
|
ref: ref,
|
130
156
|
view: view,
|
131
|
-
size: size
|
157
|
+
size: size,
|
158
|
+
style: {
|
159
|
+
display: 'inline-block'
|
160
|
+
}
|
132
161
|
}, rest), /*#__PURE__*/React.createElement(Ul, {
|
162
|
+
ref: targetRef,
|
163
|
+
id: "".concat(treeId, "_tree_level_1"),
|
164
|
+
role: "tree",
|
133
165
|
listHeight: listHeight,
|
134
166
|
listOverflow: listOverflow,
|
135
|
-
role: "tree",
|
136
|
-
id: "tree_level_1",
|
137
167
|
listWidth: listWidth
|
138
168
|
}, items.map(function (item, index) {
|
139
169
|
return /*#__PURE__*/React.createElement(DropdownInner, {
|
140
170
|
key: "".concat(index, "/0"),
|
141
171
|
item: item,
|
142
172
|
currentLevel: 0,
|
143
|
-
focusedPath: focusedPath,
|
144
173
|
trigger: trigger,
|
145
174
|
path: path,
|
146
175
|
dispatchPath: dispatchPath,
|
147
176
|
index: index,
|
148
|
-
itemRole: itemRole,
|
149
177
|
listHeight: listHeight,
|
150
178
|
listOverflow: listOverflow,
|
151
|
-
|
152
|
-
closeOnSelect: closeOnSelect,
|
153
|
-
onHover: onHover,
|
154
|
-
onItemSelect: onItemSelect,
|
155
|
-
onItemClick: onItemClick,
|
156
|
-
listWidth: listWidth,
|
157
|
-
variant: variant,
|
158
|
-
hasArrow: hasArrow,
|
159
|
-
size: size
|
179
|
+
listWidth: listWidth
|
160
180
|
});
|
161
|
-
}))));
|
181
|
+
})))));
|
162
182
|
});
|
163
183
|
};
|
164
184
|
export var dropdownConfig = {
|
@@ -1,37 +1,21 @@
|
|
1
1
|
import _styled from "@emotion/styled/base";
|
2
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
3
2
|
import { css } from '@emotion/react';
|
4
|
-
import { component } from '../../engines';
|
5
|
-
import { popoverConfig, popoverClasses } from '../Popover';
|
6
3
|
import { getCorrectHeight } from './utils';
|
7
|
-
import { tokens } from './Dropdown.tokens';
|
8
|
-
var Popover = /*#__PURE__*/component(popoverConfig);
|
9
|
-
export var StyledPopover = /*#__PURE__*/_styled(Popover, {
|
10
|
-
target: "euqmbvx1",
|
11
|
-
label: "plasma-new-hope__StyledPopover"
|
12
|
-
})(".", /*#__PURE__*/String(popoverClasses.wrapper), ",.", /*#__PURE__*/String(popoverClasses.target), "{display:block;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVk0QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgY29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBwb3BvdmVyQ29uZmlnLCBwb3BvdmVyQ2xhc3NlcyB9IGZyb20gJy4uL1BvcG92ZXInO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL0Ryb3Bkb3duLnRva2Vucyc7XG5cbmNvbnN0IFBvcG92ZXIgPSBjb21wb25lbnQocG9wb3ZlckNvbmZpZyk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQb3BvdmVyID0gc3R5bGVkKFBvcG92ZXIpYFxuICAgIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy53cmFwcGVyKX0sIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy50YXJnZXQpfSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgbGlzdEhlaWdodDogRHJvcGRvd25Qcm9wc1snbGlzdEhlaWdodCddO1xuICAgIGxpc3RPdmVyZmxvdzogRHJvcGRvd25Qcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbn0+YFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy5ib3hTaGFkb3d9KTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcblxuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMCAwIHZhcigke3Rva2Vucy5wYWRkaW5nfSlgIDogMCl9O1xuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuIl19 */"));
|
4
|
+
import { tokens, constants } from './Dropdown.tokens';
|
13
5
|
export var Ul = /*#__PURE__*/_styled("ul", {
|
14
6
|
target: "euqmbvx0",
|
15
7
|
label: "plasma-new-hope__Ul"
|
16
|
-
})("box-sizing:border-box;
|
8
|
+
})("box-sizing:border-box;width:", function (_ref) {
|
17
9
|
var listWidth = _ref.listWidth;
|
18
10
|
return listWidth || "var(".concat(tokens.width, ")");
|
19
11
|
}, ";height:", function (_ref2) {
|
20
12
|
var listHeight = _ref2.listHeight;
|
21
13
|
return listHeight ? getCorrectHeight(listHeight) : 'auto';
|
22
|
-
}, ";
|
23
|
-
var
|
14
|
+
}, ";margin:", function (_ref3) {
|
15
|
+
var isInnerUl = _ref3.isInnerUl;
|
16
|
+
return isInnerUl ? "calc(var(".concat(tokens.padding, ") * -1) 0.125rem 0") : 0;
|
17
|
+
}, ";padding:var(", tokens.padding, ") 0;overflow:", function (_ref4) {
|
18
|
+
var listOverflow = _ref4.listOverflow;
|
24
19
|
return listOverflow || 'initial';
|
25
|
-
}, ";
|
26
|
-
|
27
|
-
return isInnerUl ? "calc(var(".concat(tokens.padding, ") * -1) 0 0 var(").concat(tokens.padding, ")") : 0;
|
28
|
-
}, ";padding:var(", tokens.padding, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCRSIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgY29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBwb3BvdmVyQ29uZmlnLCBwb3BvdmVyQ2xhc3NlcyB9IGZyb20gJy4uL1BvcG92ZXInO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL0Ryb3Bkb3duLnRva2Vucyc7XG5cbmNvbnN0IFBvcG92ZXIgPSBjb21wb25lbnQocG9wb3ZlckNvbmZpZyk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQb3BvdmVyID0gc3R5bGVkKFBvcG92ZXIpYFxuICAgIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy53cmFwcGVyKX0sIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy50YXJnZXQpfSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgbGlzdEhlaWdodDogRHJvcGRvd25Qcm9wc1snbGlzdEhlaWdodCddO1xuICAgIGxpc3RPdmVyZmxvdzogRHJvcGRvd25Qcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbn0+YFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy5ib3hTaGFkb3d9KTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcblxuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMCAwIHZhcigke3Rva2Vucy5wYWRkaW5nfSlgIDogMCl9O1xuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuIl19 */"));
|
29
|
-
export var base = process.env.NODE_ENV === "production" ? {
|
30
|
-
name: "1mufh2u-plasma-new-hope__base",
|
31
|
-
styles: "display:inline-block;label:plasma-new-hope__base;"
|
32
|
-
} : {
|
33
|
-
name: "1mufh2u-plasma-new-hope__base",
|
34
|
-
styles: "display:inline-block;label:plasma-new-hope__base;",
|
35
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDdUIiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgcG9wb3ZlckNvbmZpZywgcG9wb3ZlckNsYXNzZXMgfSBmcm9tICcuLi9Qb3BvdmVyJztcblxuaW1wb3J0IHsgZ2V0Q29ycmVjdEhlaWdodCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRHJvcGRvd25Qcm9wcyB9IGZyb20gJy4vRHJvcGRvd24udHlwZXMnO1xuaW1wb3J0IHsgdG9rZW5zIH0gZnJvbSAnLi9Ecm9wZG93bi50b2tlbnMnO1xuXG5jb25zdCBQb3BvdmVyID0gY29tcG9uZW50KHBvcG92ZXJDb25maWcpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkUG9wb3ZlciA9IHN0eWxlZChQb3BvdmVyKWBcbiAgICAuJHtTdHJpbmcocG9wb3ZlckNsYXNzZXMud3JhcHBlcil9LCAuJHtTdHJpbmcocG9wb3ZlckNsYXNzZXMudGFyZ2V0KX0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVWwgPSBzdHlsZWQudWw8e1xuICAgIGxpc3RIZWlnaHQ6IERyb3Bkb3duUHJvcHNbJ2xpc3RIZWlnaHQnXTtcbiAgICBsaXN0T3ZlcmZsb3c6IERyb3Bkb3duUHJvcHNbJ2xpc3RPdmVyZmxvdyddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG4gICAgbGlzdFdpZHRoPzogRHJvcGRvd25Qcm9wc1snbGlzdFdpZHRoJ107XG59PmBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgYmFja2dyb3VuZDogdmFyKCR7dG9rZW5zLmJhY2tncm91bmR9KTtcbiAgICBib3gtc2hhZG93OiB2YXIoJHt0b2tlbnMuYm94U2hhZG93fSk7XG5cbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG4gICAgd2lkdGg6ICR7KHsgbGlzdFdpZHRoIH0pID0+IGxpc3RXaWR0aCB8fCBgdmFyKCR7dG9rZW5zLndpZHRofSlgfTtcbiAgICBoZWlnaHQ6ICR7KHsgbGlzdEhlaWdodCB9KSA9PiAobGlzdEhlaWdodCA/IGdldENvcnJlY3RIZWlnaHQobGlzdEhlaWdodCkgOiAnYXV0bycpfTtcbiAgICBvdmVyZmxvdzogJHsoeyBsaXN0T3ZlcmZsb3cgfSkgPT4gbGlzdE92ZXJmbG93IHx8ICdpbml0aWFsJ307XG5cbiAgICBtYXJnaW46ICR7KHsgaXNJbm5lclVsIH0pID0+IChpc0lubmVyVWwgPyBgY2FsYyh2YXIoJHt0b2tlbnMucGFkZGluZ30pICogLTEpIDAgMCB2YXIoJHt0b2tlbnMucGFkZGluZ30pYCA6IDApfTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuYDtcbiJdfQ== */",
|
36
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
37
|
-
};
|
20
|
+
}, ";background:var(", constants.background, ");box-shadow:", constants.boxShadow, ";border-radius:var(", tokens.borderRadius, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlFIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMsIGNvbnN0YW50cyB9IGZyb20gJy4vRHJvcGRvd24udG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFVsID0gc3R5bGVkLnVsPHtcbiAgICBsaXN0SGVpZ2h0OiBEcm9wZG93blByb3BzWydsaXN0SGVpZ2h0J107XG4gICAgbGlzdE92ZXJmbG93OiBEcm9wZG93blByb3BzWydsaXN0T3ZlcmZsb3cnXTtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbiAgICBpc0lubmVyVWw/OiBib29sZWFuO1xufT5gXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMC4xMjVyZW0gMGAgOiAwKX07XG4gICAgcGFkZGluZzogdmFyKCR7dG9rZW5zLnBhZGRpbmd9KSAwO1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6ICR7Y29uc3RhbnRzLmJveFNoYWRvd307XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgYDtcbiJdfQ== */"));
|
21
|
+
export var base = /*#__PURE__*/css(";label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCdUIiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGdldENvcnJlY3RIZWlnaHQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERyb3Bkb3duUHJvcHMgfSBmcm9tICcuL0Ryb3Bkb3duLnR5cGVzJztcbmltcG9ydCB7IHRva2VucywgY29uc3RhbnRzIH0gZnJvbSAnLi9Ecm9wZG93bi50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgVWwgPSBzdHlsZWQudWw8e1xuICAgIGxpc3RIZWlnaHQ6IERyb3Bkb3duUHJvcHNbJ2xpc3RIZWlnaHQnXTtcbiAgICBsaXN0T3ZlcmZsb3c6IERyb3Bkb3duUHJvcHNbJ2xpc3RPdmVyZmxvdyddO1xuICAgIGxpc3RXaWR0aD86IERyb3Bkb3duUHJvcHNbJ2xpc3RXaWR0aCddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG59PmBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAkeyh7IGxpc3RXaWR0aCB9KSA9PiBsaXN0V2lkdGggfHwgYHZhcigke3Rva2Vucy53aWR0aH0pYH07XG4gICAgaGVpZ2h0OiAkeyh7IGxpc3RIZWlnaHQgfSkgPT4gKGxpc3RIZWlnaHQgPyBnZXRDb3JyZWN0SGVpZ2h0KGxpc3RIZWlnaHQpIDogJ2F1dG8nKX07XG4gICAgbWFyZ2luOiAkeyh7IGlzSW5uZXJVbCB9KSA9PiAoaXNJbm5lclVsID8gYGNhbGModmFyKCR7dG9rZW5zLnBhZGRpbmd9KSAqIC0xKSAwLjEyNXJlbSAwYCA6IDApfTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ30pIDA7XG4gICAgb3ZlcmZsb3c6ICR7KHsgbGlzdE92ZXJmbG93IH0pID0+IGxpc3RPdmVyZmxvdyB8fCAnaW5pdGlhbCd9O1xuICAgIGJhY2tncm91bmQ6IHZhcigke2NvbnN0YW50cy5iYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogJHtjb25zdGFudHMuYm94U2hhZG93fTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BgO1xuIl19 */"));
|
@@ -3,7 +3,7 @@ export var classes = {
|
|
3
3
|
dropdownItemIsFocused: 'dropdown-item-is-focused',
|
4
4
|
dropdownItemIsDisabled: 'dropdown-item-is-disabled',
|
5
5
|
dropdownItemIsActive: 'dropdown-item-is-active',
|
6
|
-
dropdownItemIsSelected: '
|
6
|
+
dropdownItemIsSelected: 'dropdown-item-is-selected'
|
7
7
|
};
|
8
8
|
export var tokens = {
|
9
9
|
background: '--plasma-dropdown-background',
|
@@ -14,6 +14,8 @@ export var tokens = {
|
|
14
14
|
disclosureIconColor: '--plasma-dropdown-disclosure-icon-color',
|
15
15
|
disabledOpacity: '--plasma-dropdown-disabled-opacity',
|
16
16
|
focusColor: '--plasma-dropdown-focus-color',
|
17
|
+
// Old
|
18
|
+
|
17
19
|
dividerColor: '--plasma-dropdown-divider-color',
|
18
20
|
dividerMarginTop: '--plasma-dropdown-divider-margin-top',
|
19
21
|
dividerMarginTopTight: '--plasma-dropdown-divider-margin-top-tight',
|
@@ -28,6 +30,7 @@ export var tokens = {
|
|
28
30
|
itemBackgroundSelectedHover: '--plasma-dropdown-item-background-selected-hover',
|
29
31
|
// Old
|
30
32
|
itemColor: '--plasma-dropdown-item-color',
|
33
|
+
// Old
|
31
34
|
itemColorSelected: '--plasma-dropdown-item-color-selected',
|
32
35
|
// Old
|
33
36
|
itemColorSelectedHover: '--plasma-dropdown-item-color-selected-hover',
|
@@ -46,11 +49,17 @@ export var tokens = {
|
|
46
49
|
itemMarginLeft: '--plasma-dropdown-item-margin-left',
|
47
50
|
// Old
|
48
51
|
itemPaddingTop: '--plasma-dropdown-item-padding-top',
|
52
|
+
// Old
|
49
53
|
itemPaddingTopTight: '--plasma-dropdown-item-padding-top-tight',
|
54
|
+
// Old
|
50
55
|
itemPaddingRight: '--plasma-dropdown-item-padding-right',
|
56
|
+
// Old
|
51
57
|
itemPaddingBottom: '--plasma-dropdown-item-padding-bottom',
|
58
|
+
// Old
|
52
59
|
itemPaddingBottomTight: '--plasma-dropdown-item-padding-bottom-tight',
|
60
|
+
// Old
|
53
61
|
itemPaddingLeft: '--plasma-dropdown-item-padding-left',
|
62
|
+
// Old
|
54
63
|
itemContentLeftWidth: '--plasma-dropdown-item-content-left-width',
|
55
64
|
// Old
|
56
65
|
itemContentLeftColor: '--plasma-dropdown-item-content-left-color',
|
@@ -65,6 +74,20 @@ export var tokens = {
|
|
65
74
|
itemFontWeightBold: '--plasma-dropdown-item-letter-spacing',
|
66
75
|
itemFontLetterSpacing: '--plasma-dropdown-item-line-height',
|
67
76
|
itemFontLineHeight: '--plasma-dropdown-item-font-weight',
|
77
|
+
itemPadding: '--plasma-dropdown-item-padding',
|
78
|
+
itemPaddingTight: '--plasma-dropdown-item-padding-tight',
|
79
|
+
cellPadding: '--plasma-dropdown-cell-padding',
|
80
|
+
cellPaddingLeftContent: '--plasma-dropdown-cell-padding-left-content',
|
81
|
+
cellPaddingContent: '--plasma-dropdown-cell-padding-content',
|
82
|
+
cellPaddingRightContent: '--plasma-dropdown-cell-padding-right-content',
|
83
|
+
cellTextboxGap: '--plasma-dropdown-cell-textbox-gap',
|
84
|
+
cellGap: '--plasma-dropdown-cell-gap',
|
85
|
+
cellTitleFontFamily: '--plasma-dropdown-cell-title-font-family',
|
86
|
+
cellTitleFontSize: '--plasma-dropdown-cell-title-font-size',
|
87
|
+
cellTitleFontStyle: '--plasma-dropdown-cell-title-font-style',
|
88
|
+
cellTitleFontWeight: '--plasma-dropdown-cell-title-font-weight',
|
89
|
+
cellTitleLetterSpacing: '--plasma-dropdown-cell-title-letter-spacing',
|
90
|
+
cellTitleLineHeight: '--plasma-dropdown-cell-title-line-height',
|
68
91
|
// TODO: Remove below tokens as soon as they are no longer needed
|
69
92
|
footerBackground: '--plasma-dropdown-footer-background',
|
70
93
|
footerWidth: '--plasma-dropdown-footer-width',
|
@@ -128,4 +151,15 @@ export var tokens = {
|
|
128
151
|
groupLabelMarginRight: '--plasma-dropdown-group-label-margin-right',
|
129
152
|
groupLabelMarginBottom: '--plasma-dropdown-group-label-margin-bottom',
|
130
153
|
groupLabelMarginLeft: '--plasma-dropdown-group-label-margin-left'
|
154
|
+
};
|
155
|
+
export var constants = {
|
156
|
+
focusColor: '--surface-accent',
|
157
|
+
background: '--surface-solid-card-brightness',
|
158
|
+
boxShadow: '0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04)',
|
159
|
+
disclosureIconColor: '--text-secondary',
|
160
|
+
itemBackground: '--plasma-colors-transparent',
|
161
|
+
itemBackgroundHover: '--surface-transparent-secondary',
|
162
|
+
opacity: '0.4',
|
163
|
+
cellTitleColor: '--text-primary',
|
164
|
+
cellBackgroundColor: '--plasma-colors-transparent'
|
131
165
|
};
|
@@ -0,0 +1,102 @@
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
+
import { flip, shift, useFloating, FloatingPortal, offset as offsetMiddleware, autoPlacement } from '@floating-ui/react';
|
8
|
+
import React, { forwardRef } from 'react';
|
9
|
+
import { safeUseId } from '@salutejs/plasma-core';
|
10
|
+
var FloatingPopover = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
11
|
+
var target = _ref.target,
|
12
|
+
children = _ref.children,
|
13
|
+
opened = _ref.opened,
|
14
|
+
onToggle = _ref.onToggle,
|
15
|
+
placement = _ref.placement,
|
16
|
+
portal = _ref.portal,
|
17
|
+
_ref$offset = _ref.offset,
|
18
|
+
offset = _ref$offset === void 0 ? [0, 0] : _ref$offset,
|
19
|
+
isInner = _ref.isInner,
|
20
|
+
trigger = _ref.trigger;
|
21
|
+
var _useFloating = useFloating({
|
22
|
+
placement: placement === 'auto' ? undefined : placement,
|
23
|
+
open: opened,
|
24
|
+
middleware: [placement === 'auto' && autoPlacement(), offsetMiddleware({
|
25
|
+
mainAxis: offset[1],
|
26
|
+
crossAxis: offset[0]
|
27
|
+
}), flip({
|
28
|
+
fallbackAxisSideDirection: 'end'
|
29
|
+
}), shift()]
|
30
|
+
}),
|
31
|
+
refs = _useFloating.refs,
|
32
|
+
floatingStyles = _useFloating.floatingStyles;
|
33
|
+
var wrappedId = safeUseId();
|
34
|
+
var handleTargetClick = function handleTargetClick(event) {
|
35
|
+
if (trigger === 'hover') {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
if (onToggle) {
|
39
|
+
onToggle(!opened, event);
|
40
|
+
}
|
41
|
+
};
|
42
|
+
var handleTargetMouseEnter = function handleTargetMouseEnter(event) {
|
43
|
+
if (trigger === 'click' || opened) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
onToggle(true, event);
|
47
|
+
};
|
48
|
+
var handleTargetMouseLeave = function handleTargetMouseLeave(event) {
|
49
|
+
if (event.relatedTarget instanceof HTMLElement && refs.floating.current instanceof HTMLElement) {
|
50
|
+
var _refs$floating$curren;
|
51
|
+
if (trigger === 'click' || !opened || event.relatedTarget && refs.floating && (_refs$floating$curren = refs.floating.current) !== null && _refs$floating$curren !== void 0 && _refs$floating$curren.contains(event.relatedTarget)) {
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
onToggle(false, event);
|
55
|
+
}
|
56
|
+
};
|
57
|
+
var handleFloatingMouseLeave = function handleFloatingMouseLeave(event) {
|
58
|
+
if (event.relatedTarget instanceof HTMLElement && refs.reference.current instanceof HTMLElement) {
|
59
|
+
var _refs$reference$curre;
|
60
|
+
if (trigger === 'click' || !opened || event.relatedTarget && refs.reference && (_refs$reference$curre = refs.reference.current) !== null && _refs$reference$curre !== void 0 && _refs$reference$curre.contains(event.relatedTarget)) {
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
onToggle(false, event);
|
64
|
+
}
|
65
|
+
};
|
66
|
+
return /*#__PURE__*/React.createElement("div", {
|
67
|
+
id: wrappedId,
|
68
|
+
style: {
|
69
|
+
display: isInner ? 'block' : 'inline-block'
|
70
|
+
},
|
71
|
+
ref: ref
|
72
|
+
}, /*#__PURE__*/React.createElement("div", {
|
73
|
+
ref: refs.setReference,
|
74
|
+
onClick: handleTargetClick,
|
75
|
+
onMouseEnter: handleTargetMouseEnter,
|
76
|
+
onMouseLeave: handleTargetMouseLeave
|
77
|
+
}, target), opened && /*#__PURE__*/React.createElement(FloatingPortal, getFloatingPortalProps(portal, wrappedId), /*#__PURE__*/React.createElement("div", {
|
78
|
+
ref: refs.setFloating,
|
79
|
+
onMouseLeave: handleFloatingMouseLeave,
|
80
|
+
style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
|
81
|
+
zIndex: 1
|
82
|
+
})
|
83
|
+
}, children)));
|
84
|
+
});
|
85
|
+
// root - принимает ref контейнера портала.
|
86
|
+
// id - если есть портал - не используется, если портала нет - подставляется 'wrappedId'.
|
87
|
+
var getFloatingPortalProps = function getFloatingPortalProps(portal, wrappedId) {
|
88
|
+
if (!portal) {
|
89
|
+
return {
|
90
|
+
id: wrappedId
|
91
|
+
};
|
92
|
+
}
|
93
|
+
if (typeof portal === 'string') {
|
94
|
+
return {
|
95
|
+
id: portal
|
96
|
+
};
|
97
|
+
}
|
98
|
+
return {
|
99
|
+
root: portal
|
100
|
+
};
|
101
|
+
};
|
102
|
+
export { FloatingPopover };
|
@@ -1,26 +1,18 @@
|
|
1
1
|
import React from 'react';
|
2
|
+
import { safeUseId } from '@salutejs/plasma-core';
|
2
3
|
import { DropdownItem } from '..';
|
3
|
-
import { Ul
|
4
|
+
import { Ul } from '../../Dropdown.styles';
|
5
|
+
import { FloatingPopover } from '../../FloatingPopover';
|
4
6
|
var DropdownInner = function DropdownInner(_ref) {
|
5
7
|
var item = _ref.item,
|
6
8
|
currentLevel = _ref.currentLevel,
|
7
|
-
focusedPath = _ref.focusedPath,
|
8
9
|
path = _ref.path,
|
9
10
|
dispatchPath = _ref.dispatchPath,
|
10
11
|
index = _ref.index,
|
11
12
|
trigger = _ref.trigger,
|
12
|
-
itemRole = _ref.itemRole,
|
13
13
|
listHeight = _ref.listHeight,
|
14
14
|
listOverflow = _ref.listOverflow,
|
15
|
-
|
16
|
-
closeOnSelect = _ref.closeOnSelect,
|
17
|
-
onHover = _ref.onHover,
|
18
|
-
onItemSelect = _ref.onItemSelect,
|
19
|
-
onItemClick = _ref.onItemClick,
|
20
|
-
listWidth = _ref.listWidth,
|
21
|
-
variant = _ref.variant,
|
22
|
-
hasArrow = _ref.hasArrow,
|
23
|
-
size = _ref.size;
|
15
|
+
listWidth = _ref.listWidth;
|
24
16
|
var handleToggle = function handleToggle(opened) {
|
25
17
|
if (opened) {
|
26
18
|
dispatchPath({
|
@@ -36,80 +28,54 @@ var DropdownInner = function DropdownInner(_ref) {
|
|
36
28
|
}
|
37
29
|
};
|
38
30
|
var isCurrentListOpen = path[currentLevel + 1] === item.value.toString();
|
39
|
-
var
|
31
|
+
var treeId = safeUseId();
|
32
|
+
var listId = "".concat(treeId, "_tree_level_").concat(currentLevel + 2);
|
40
33
|
var nextLevel = currentLevel + 1;
|
41
34
|
if (item !== null && item !== void 0 && item.items) {
|
42
|
-
return /*#__PURE__*/React.createElement(
|
43
|
-
opened: isCurrentListOpen,
|
44
|
-
usePortal: false,
|
35
|
+
return /*#__PURE__*/React.createElement(FloatingPopover, {
|
45
36
|
placement: "right-start",
|
37
|
+
opened: isCurrentListOpen,
|
38
|
+
onToggle: handleToggle,
|
46
39
|
trigger: trigger,
|
47
40
|
target: /*#__PURE__*/React.createElement(DropdownItem, {
|
48
41
|
item: item,
|
49
42
|
index: index,
|
50
43
|
path: path,
|
51
|
-
focusedPath: focusedPath,
|
52
44
|
currentLevel: currentLevel,
|
53
|
-
itemRole: itemRole,
|
54
|
-
onHover: onHover,
|
55
|
-
onItemSelect: onItemSelect,
|
56
|
-
onItemClick: onItemClick,
|
57
|
-
variant: variant,
|
58
|
-
hasArrow: hasArrow,
|
59
45
|
ariaControls: listId,
|
60
46
|
ariaExpanded: isCurrentListOpen,
|
61
47
|
ariaLevel: nextLevel,
|
62
|
-
ariaLabel: item.label
|
63
|
-
size: size
|
48
|
+
ariaLabel: item.label
|
64
49
|
}),
|
65
|
-
|
66
|
-
isFocusTrapped: false,
|
67
|
-
preventOverflow: false
|
50
|
+
isInner: true
|
68
51
|
}, /*#__PURE__*/React.createElement(Ul, {
|
52
|
+
id: listId,
|
53
|
+
role: "group",
|
54
|
+
isInnerUl: true,
|
69
55
|
listHeight: listHeight,
|
70
56
|
listOverflow: listOverflow,
|
71
|
-
|
72
|
-
id: listId,
|
73
|
-
listWidth: listWidth,
|
74
|
-
isInnerUl: true
|
57
|
+
listWidth: listWidth
|
75
58
|
}, item.items.map(function (innerItem, innerIndex) {
|
76
59
|
return /*#__PURE__*/React.createElement(DropdownInner, {
|
77
60
|
key: "".concat(innerIndex, "/").concat(currentLevel),
|
78
61
|
item: innerItem,
|
79
62
|
currentLevel: nextLevel,
|
80
|
-
focusedPath: focusedPath,
|
81
63
|
path: path,
|
82
64
|
dispatchPath: dispatchPath,
|
83
65
|
index: innerIndex,
|
84
66
|
trigger: trigger,
|
85
|
-
itemRole: itemRole,
|
86
67
|
listHeight: listHeight,
|
87
68
|
listOverflow: listOverflow,
|
88
|
-
|
89
|
-
closeOnSelect: closeOnSelect,
|
90
|
-
onHover: onHover,
|
91
|
-
onItemSelect: onItemSelect,
|
92
|
-
onItemClick: onItemClick,
|
93
|
-
listWidth: listWidth,
|
94
|
-
variant: variant,
|
95
|
-
hasArrow: hasArrow,
|
96
|
-
size: size
|
69
|
+
listWidth: listWidth
|
97
70
|
});
|
98
71
|
})));
|
99
72
|
}
|
100
73
|
return /*#__PURE__*/React.createElement(DropdownItem, {
|
101
74
|
item: item,
|
75
|
+
path: path,
|
102
76
|
index: index,
|
103
|
-
focusedPath: focusedPath,
|
104
77
|
currentLevel: currentLevel,
|
105
|
-
|
106
|
-
handleGlobalToggle: handleGlobalToggle,
|
107
|
-
closeOnSelect: closeOnSelect,
|
108
|
-
onHover: onHover,
|
109
|
-
onItemSelect: onItemSelect,
|
110
|
-
onItemClick: onItemClick,
|
111
|
-
variant: variant,
|
112
|
-
size: size
|
78
|
+
ariaLevel: nextLevel
|
113
79
|
});
|
114
80
|
};
|
115
81
|
export { DropdownInner };
|
@@ -1,28 +1,19 @@
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
1
|
+
import React, { useEffect, useRef, useContext } from 'react';
|
2
2
|
import { classes } from '../../Dropdown.tokens';
|
3
3
|
import { cx } from '../../../../utils';
|
4
4
|
import { IconDisclosureRight } from '../../../_Icon';
|
5
|
-
import {
|
5
|
+
import { Context } from '../../Dropdown';
|
6
|
+
import { getItemId } from '../../utils';
|
7
|
+
import { Wrapper, DisclosureIconWrapper, Divider, CellWrapper, StyledCell } from './DropdownItem.styles';
|
6
8
|
export var DropdownItem = function DropdownItem(_ref) {
|
7
9
|
var item = _ref.item,
|
8
10
|
path = _ref.path,
|
9
|
-
focusedPath = _ref.focusedPath,
|
10
11
|
currentLevel = _ref.currentLevel,
|
11
12
|
index = _ref.index,
|
12
|
-
itemRole = _ref.itemRole,
|
13
|
-
closeOnSelect = _ref.closeOnSelect,
|
14
|
-
handleGlobalToggle = _ref.handleGlobalToggle,
|
15
|
-
onHover = _ref.onHover,
|
16
|
-
onItemSelect = _ref.onItemSelect,
|
17
|
-
onItemClick = _ref.onItemClick,
|
18
13
|
ariaControls = _ref.ariaControls,
|
19
14
|
ariaExpanded = _ref.ariaExpanded,
|
20
|
-
ariaHasPopup = _ref.ariaHasPopup,
|
21
15
|
ariaLevel = _ref.ariaLevel,
|
22
|
-
ariaLabel = _ref.ariaLabel
|
23
|
-
variant = _ref.variant,
|
24
|
-
hasArrow = _ref.hasArrow,
|
25
|
-
size = _ref.size;
|
16
|
+
ariaLabel = _ref.ariaLabel;
|
26
17
|
var value = item.value,
|
27
18
|
label = item.label,
|
28
19
|
disabled = item.disabled,
|
@@ -32,6 +23,19 @@ export var DropdownItem = function DropdownItem(_ref) {
|
|
32
23
|
dividerBefore = item.dividerBefore,
|
33
24
|
dividerAfter = item.dividerAfter;
|
34
25
|
var ref = useRef(null);
|
26
|
+
var _useContext = useContext(Context),
|
27
|
+
focusedPath = _useContext.focusedPath,
|
28
|
+
size = _useContext.size,
|
29
|
+
variant = _useContext.variant,
|
30
|
+
itemRole = _useContext.itemRole,
|
31
|
+
handleGlobalToggle = _useContext.handleGlobalToggle,
|
32
|
+
closeOnSelect = _useContext.closeOnSelect,
|
33
|
+
onHover = _useContext.onHover,
|
34
|
+
onItemSelect = _useContext.onItemSelect,
|
35
|
+
onItemClick = _useContext.onItemClick,
|
36
|
+
hasArrow = _useContext.hasArrow,
|
37
|
+
treeId = _useContext.treeId;
|
38
|
+
var hasDescendants = Boolean(item.items);
|
35
39
|
var disclosureIconSize = size === 'xs' ? 'xs' : 's';
|
36
40
|
var isDisabledClassName = disabled || isDisabled ? classes.dropdownItemIsDisabled : undefined;
|
37
41
|
var focusedClass = currentLevel === focusedPath.length - 1 && index === (focusedPath === null || focusedPath === void 0 ? void 0 : focusedPath[currentLevel]) ? classes.dropdownItemIsFocused : undefined;
|
@@ -55,7 +59,9 @@ export var DropdownItem = function DropdownItem(_ref) {
|
|
55
59
|
if (onItemClick) {
|
56
60
|
onItemClick(item, event);
|
57
61
|
}
|
58
|
-
|
62
|
+
|
63
|
+
// Закрываем весь дропдаун целиком при клике на айтем без потомков. Только при closeOnSelect === true.
|
64
|
+
if (closeOnSelect && !hasDescendants) {
|
59
65
|
handleGlobalToggle(false, event);
|
60
66
|
}
|
61
67
|
};
|
@@ -67,20 +73,25 @@ export var DropdownItem = function DropdownItem(_ref) {
|
|
67
73
|
return /*#__PURE__*/React.createElement(React.Fragment, null, dividerBefore && /*#__PURE__*/React.createElement(Divider, {
|
68
74
|
variant: variant
|
69
75
|
}), /*#__PURE__*/React.createElement(Wrapper, {
|
76
|
+
ref: ref,
|
70
77
|
className: cx(isDisabledClassName, focusedClass, activeClass),
|
71
|
-
id: value.toString(),
|
78
|
+
id: getItemId(treeId, value.toString()),
|
72
79
|
role: itemRole,
|
73
|
-
ref: ref,
|
74
|
-
"aria-disabled": disabled || isDisabled,
|
75
80
|
onClick: handleClick,
|
76
81
|
onMouseEnter: handleHover,
|
77
82
|
variant: variant,
|
83
|
+
"aria-disabled": disabled || isDisabled,
|
78
84
|
"aria-controls": ariaControls,
|
79
85
|
"aria-expanded": ariaExpanded,
|
80
|
-
"aria-haspopup": ariaHasPopup,
|
81
86
|
"aria-level": ariaLevel,
|
82
87
|
"aria-label": ariaLabel
|
83
|
-
},
|
88
|
+
}, /*#__PURE__*/React.createElement(CellWrapper, null, /*#__PURE__*/React.createElement(StyledCell, {
|
89
|
+
contentLeft: contentLeft,
|
90
|
+
contentRight: contentRight,
|
91
|
+
alignContentLeft: "center",
|
92
|
+
alignContentRight: "center",
|
93
|
+
title: label
|
94
|
+
})), item.items && hasArrow && /*#__PURE__*/React.createElement(DisclosureIconWrapper, null, /*#__PURE__*/React.createElement(IconDisclosureRight, {
|
84
95
|
size: disclosureIconSize,
|
85
96
|
color: "inherit"
|
86
97
|
}))), dividerAfter && /*#__PURE__*/React.createElement(Divider, {
|