@rescui/menu 0.13.8-RUI-297-Add-react-compiler-to-the-packages-build-dbbefd7b8.14 → 0.13.8-RUI-297-Add-react-compiler-to-the-packages-build-8aaaed4be.43
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/lib/_virtual/check-outline.js +337 -0
- package/lib/_virtual/index.css.js +15 -0
- package/lib/index.css +201 -76
- package/lib/index.d.ts +1 -5
- package/lib/menu.d.ts +17 -11
- package/lib/menu.js +385 -46
- package/lib/menu.p.module.css.js +34 -27
- package/lib/parts/divider.d.ts +3 -6
- package/lib/parts/divider.js +53 -10
- package/lib/parts/group-header.d.ts +2 -8
- package/lib/parts/group-header.js +43 -10
- package/lib/parts/menu-context.d.ts +2 -19
- package/lib/parts/menu-context.js +79 -23
- package/lib/parts/menu-item.d.ts +25 -13
- package/lib/parts/menu-item.js +348 -71
- package/lib/parts/navigation-utils.d.ts +2 -2
- package/lib/parts/use-menu-keyboard-navigation.d.ts +7 -5
- package/lib/parts/use-menu-keyboard-navigation.js +224 -110
- package/lib/public-api.p.css +57 -76
- package/lib/public-api.pcss +57 -76
- package/lib/types.d.ts +87 -0
- package/llm/components/menu.md +79 -8
- package/package.json +6 -6
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
export type
|
|
4
|
-
export type MenuItemIconPlacement = 'left' | 'right';
|
|
5
|
-
export type MenuItemMode = 'clear' | 'classic' | 'rock';
|
|
6
|
-
export interface MenuContextValue {
|
|
7
|
-
iconPlacement?: MenuItemIconPlacement;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
disableCursor?: boolean;
|
|
10
|
-
size?: MenuItemSize;
|
|
11
|
-
mode?: MenuItemMode;
|
|
12
|
-
theme?: Theme;
|
|
13
|
-
itemTag?: React.ElementType;
|
|
14
|
-
wrapWithLi: boolean;
|
|
15
|
-
registerItem?: (ref: HTMLElement) => void;
|
|
16
|
-
unregisterItem?: (ref: HTMLElement) => void;
|
|
17
|
-
activeItemRef?: HTMLElement;
|
|
18
|
-
isKeyboardNavigating: boolean;
|
|
19
|
-
resizeIcons?: boolean;
|
|
20
|
-
}
|
|
2
|
+
import type { MenuContextValue } from '../types';
|
|
3
|
+
export type { MenuContextValue, MenuItemMode, MenuItemIconPlacement, MenuItemSize } from '../types';
|
|
21
4
|
export declare const DEFAULT_MENU_CONTEXT: MenuContextValue;
|
|
22
5
|
export declare const MenuContext: React.Context<MenuContextValue>;
|
|
23
6
|
export declare const useMenuContext: () => MenuContextValue;
|
|
@@ -1,46 +1,102 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { c } from 'react-compiler-runtime';
|
|
2
3
|
import React, { useContext } from 'react';
|
|
3
4
|
import PropTypes from 'prop-types';
|
|
4
5
|
const DEFAULT_MENU_CONTEXT = {
|
|
5
6
|
disabled: false,
|
|
6
|
-
|
|
7
|
+
keyboardNavigationEnabled: false,
|
|
7
8
|
wrapWithLi: false,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
registerItem: null,
|
|
10
|
+
unregisterItem: null,
|
|
11
|
+
currentActiveItemEl: null,
|
|
12
|
+
onItemFocus: null,
|
|
13
|
+
onItemKeyDown: null,
|
|
14
|
+
onItemMouseEnter: null
|
|
12
15
|
};
|
|
13
16
|
const MenuContext = /*#__PURE__*/React.createContext(DEFAULT_MENU_CONTEXT);
|
|
14
17
|
|
|
15
|
-
const useMenuContext = () =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
const useMenuContext = () => {
|
|
19
|
+
return useContext(MenuContext);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const MenuProvider = t0 => {
|
|
23
|
+
const $ = c(16);
|
|
24
|
+
let children;
|
|
25
|
+
let restProps;
|
|
26
|
+
let t1;
|
|
27
|
+
let t2;
|
|
28
|
+
let t3;
|
|
29
|
+
let t4;
|
|
30
|
+
|
|
31
|
+
if ($[0] !== t0) {
|
|
32
|
+
({
|
|
33
|
+
children,
|
|
34
|
+
disabled: t1,
|
|
35
|
+
wrapWithLi: t2,
|
|
36
|
+
registerItem: t3,
|
|
37
|
+
unregisterItem: t4,
|
|
38
|
+
...restProps
|
|
39
|
+
} = t0);
|
|
40
|
+
$[0] = t0;
|
|
41
|
+
$[1] = children;
|
|
42
|
+
$[2] = restProps;
|
|
43
|
+
$[3] = t1;
|
|
44
|
+
$[4] = t2;
|
|
45
|
+
$[5] = t3;
|
|
46
|
+
$[6] = t4;
|
|
47
|
+
} else {
|
|
48
|
+
children = $[1];
|
|
49
|
+
restProps = $[2];
|
|
50
|
+
t1 = $[3];
|
|
51
|
+
t2 = $[4];
|
|
52
|
+
t3 = $[5];
|
|
53
|
+
t4 = $[6];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const disabled = t1 === undefined ? DEFAULT_MENU_CONTEXT.disabled : t1;
|
|
57
|
+
const wrapWithLi = t2 === undefined ? DEFAULT_MENU_CONTEXT.wrapWithLi : t2;
|
|
58
|
+
const registerItem = t3 === undefined ? DEFAULT_MENU_CONTEXT.registerItem : t3;
|
|
59
|
+
const unregisterItem = t4 === undefined ? DEFAULT_MENU_CONTEXT.unregisterItem : t4;
|
|
60
|
+
let t5;
|
|
61
|
+
|
|
62
|
+
if ($[7] !== disabled || $[8] !== registerItem || $[9] !== restProps || $[10] !== unregisterItem || $[11] !== wrapWithLi) {
|
|
63
|
+
t5 = {
|
|
29
64
|
disabled,
|
|
30
|
-
isKeyboardNavigating,
|
|
31
65
|
wrapWithLi,
|
|
32
66
|
registerItem,
|
|
33
67
|
unregisterItem,
|
|
34
68
|
...restProps
|
|
35
|
-
}
|
|
36
|
-
|
|
69
|
+
};
|
|
70
|
+
$[7] = disabled;
|
|
71
|
+
$[8] = registerItem;
|
|
72
|
+
$[9] = restProps;
|
|
73
|
+
$[10] = unregisterItem;
|
|
74
|
+
$[11] = wrapWithLi;
|
|
75
|
+
$[12] = t5;
|
|
76
|
+
} else {
|
|
77
|
+
t5 = $[12];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let t6;
|
|
81
|
+
|
|
82
|
+
if ($[13] !== children || $[14] !== t5) {
|
|
83
|
+
t6 = /*#__PURE__*/React.createElement(MenuContext.Provider, {
|
|
84
|
+
value: t5
|
|
85
|
+
}, children);
|
|
86
|
+
$[13] = children;
|
|
87
|
+
$[14] = t5;
|
|
88
|
+
$[15] = t6;
|
|
89
|
+
} else {
|
|
90
|
+
t6 = $[15];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return t6;
|
|
37
94
|
};
|
|
38
95
|
|
|
39
96
|
MenuProvider.propTypes = {
|
|
40
97
|
size: PropTypes.oneOf(['l', 'm', 's']),
|
|
41
98
|
mode: PropTypes.oneOf(['clear', 'classic', 'rock']),
|
|
42
99
|
theme: PropTypes.oneOf(['light', 'dark']),
|
|
43
|
-
disableCursor: PropTypes.bool,
|
|
44
100
|
disabled: PropTypes.bool,
|
|
45
101
|
iconPlacement: PropTypes.oneOf(['left', 'right']),
|
|
46
102
|
itemTag: PropTypes.elementType
|
package/lib/parts/menu-item.d.ts
CHANGED
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { JSX
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export interface MenuItemProps extends Omit<AllHTMLAttributes<Element>, 'size'> {
|
|
2
|
+
import type { JSX } from 'react';
|
|
3
|
+
export type { MenuItemProps } from '../types';
|
|
4
|
+
export declare const MenuItem: React.ForwardRefExoticComponent<{
|
|
6
5
|
className?: string;
|
|
7
6
|
tag?: React.ElementType;
|
|
8
7
|
icon?: JSX.Element;
|
|
9
|
-
size?: MenuItemSize;
|
|
10
|
-
mode?: MenuItemMode;
|
|
11
|
-
theme?: Theme;
|
|
8
|
+
size?: import("./menu-context").MenuItemSize;
|
|
9
|
+
mode?: import("./menu-context").MenuItemMode;
|
|
10
|
+
theme?: import("@rescui/ui-contexts").Theme;
|
|
12
11
|
disabled?: boolean;
|
|
13
|
-
disableCursor?: boolean;
|
|
14
12
|
selected?: boolean;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
children?: ReactNode;
|
|
13
|
+
iconPlacement?: import("./menu-context").MenuItemIconPlacement;
|
|
14
|
+
children?: React.ReactNode;
|
|
18
15
|
key?: string;
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
'data-test'?: string;
|
|
17
|
+
hoverIcon?: JSX.Element;
|
|
18
|
+
} & Omit<React.AllHTMLAttributes<Element>, keyof {
|
|
19
|
+
className?: string;
|
|
20
|
+
tag?: React.ElementType;
|
|
21
|
+
icon?: JSX.Element;
|
|
22
|
+
size?: import("./menu-context").MenuItemSize;
|
|
23
|
+
mode?: import("./menu-context").MenuItemMode;
|
|
24
|
+
theme?: import("@rescui/ui-contexts").Theme;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
selected?: boolean;
|
|
27
|
+
iconPlacement?: import("./menu-context").MenuItemIconPlacement;
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
key?: string;
|
|
30
|
+
'data-test'?: string;
|
|
31
|
+
hoverIcon?: JSX.Element;
|
|
32
|
+
}> & React.RefAttributes<HTMLElement>>;
|
|
21
33
|
export default MenuItem;
|
package/lib/parts/menu-item.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import
|
|
2
|
+
import _extends from '@babel/runtime-corejs3/helpers/esm/extends';
|
|
3
|
+
import { c } from 'react-compiler-runtime';
|
|
4
|
+
import React, { useState, cloneElement, useEffect } from 'react';
|
|
3
5
|
import cn from 'classnames';
|
|
4
6
|
import PropTypes from 'prop-types';
|
|
5
7
|
import { useThemeWithUndefined } from '@rescui/ui-contexts';
|
|
8
|
+
import CheckOutlineIcon from '../_virtual/check-outline.js';
|
|
6
9
|
import styles from '../menu.p.module.css.js';
|
|
7
10
|
import { useMenuContext } from './menu-context.js';
|
|
8
11
|
const ICON_PLACEMENT_STYLES = {
|
|
@@ -22,96 +25,374 @@ const SIZE_STYLES = {
|
|
|
22
25
|
const THEME_STYLES = {
|
|
23
26
|
light: styles.themeLight,
|
|
24
27
|
dark: styles.themeDark
|
|
28
|
+
};
|
|
29
|
+
const HOVER_ICON_WILL_REPLACE_STYLES = {
|
|
30
|
+
custom: styles.hideCustomIconOnHover,
|
|
31
|
+
selected: styles.hideSelectedIconOnHover,
|
|
32
|
+
none: ''
|
|
25
33
|
}; // eslint-disable-next-line complexity
|
|
26
34
|
|
|
27
|
-
const MenuItemInner = (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
const MenuItemInner = (t0, ref) => {
|
|
36
|
+
const $ = c(67);
|
|
37
|
+
let children;
|
|
38
|
+
let className;
|
|
39
|
+
let disabled;
|
|
40
|
+
let hoverIcon;
|
|
41
|
+
let icon;
|
|
42
|
+
let onFocus;
|
|
43
|
+
let onKeyDown;
|
|
44
|
+
let onMouseEnter;
|
|
45
|
+
let restProps;
|
|
46
|
+
let role;
|
|
47
|
+
let selected;
|
|
48
|
+
let t1;
|
|
49
|
+
let t2;
|
|
50
|
+
let t3;
|
|
51
|
+
let tabIndex;
|
|
52
|
+
let tag;
|
|
53
|
+
let theme;
|
|
54
|
+
|
|
55
|
+
if ($[0] !== t0) {
|
|
56
|
+
({
|
|
57
|
+
className,
|
|
58
|
+
tag,
|
|
59
|
+
children,
|
|
60
|
+
icon,
|
|
61
|
+
size: t1,
|
|
62
|
+
mode: t2,
|
|
63
|
+
theme,
|
|
64
|
+
disabled,
|
|
65
|
+
selected,
|
|
66
|
+
iconPlacement: t3,
|
|
67
|
+
onFocus,
|
|
68
|
+
onKeyDown,
|
|
69
|
+
onMouseEnter,
|
|
70
|
+
role,
|
|
71
|
+
tabIndex,
|
|
72
|
+
hoverIcon,
|
|
73
|
+
...restProps
|
|
74
|
+
} = t0);
|
|
75
|
+
$[0] = t0;
|
|
76
|
+
$[1] = children;
|
|
77
|
+
$[2] = className;
|
|
78
|
+
$[3] = disabled;
|
|
79
|
+
$[4] = hoverIcon;
|
|
80
|
+
$[5] = icon;
|
|
81
|
+
$[6] = onFocus;
|
|
82
|
+
$[7] = onKeyDown;
|
|
83
|
+
$[8] = onMouseEnter;
|
|
84
|
+
$[9] = restProps;
|
|
85
|
+
$[10] = role;
|
|
86
|
+
$[11] = selected;
|
|
87
|
+
$[12] = t1;
|
|
88
|
+
$[13] = t2;
|
|
89
|
+
$[14] = t3;
|
|
90
|
+
$[15] = tabIndex;
|
|
91
|
+
$[16] = tag;
|
|
92
|
+
$[17] = theme;
|
|
93
|
+
} else {
|
|
94
|
+
children = $[1];
|
|
95
|
+
className = $[2];
|
|
96
|
+
disabled = $[3];
|
|
97
|
+
hoverIcon = $[4];
|
|
98
|
+
icon = $[5];
|
|
99
|
+
onFocus = $[6];
|
|
100
|
+
onKeyDown = $[7];
|
|
101
|
+
onMouseEnter = $[8];
|
|
102
|
+
restProps = $[9];
|
|
103
|
+
role = $[10];
|
|
104
|
+
selected = $[11];
|
|
105
|
+
t1 = $[12];
|
|
106
|
+
t2 = $[13];
|
|
107
|
+
t3 = $[14];
|
|
108
|
+
tabIndex = $[15];
|
|
109
|
+
tag = $[16];
|
|
110
|
+
theme = $[17];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const size = t1 === undefined ? "m" : t1;
|
|
114
|
+
const mode = t2 === undefined ? "classic" : t2;
|
|
115
|
+
const iconPlacement = t3 === undefined ? "left" : t3;
|
|
45
116
|
const {
|
|
46
117
|
unregisterItem,
|
|
47
118
|
registerItem,
|
|
48
|
-
|
|
49
|
-
|
|
119
|
+
currentActiveItemEl,
|
|
120
|
+
keyboardNavigationEnabled,
|
|
121
|
+
onItemFocus,
|
|
122
|
+
onItemKeyDown,
|
|
123
|
+
onItemMouseEnter,
|
|
50
124
|
wrapWithLi,
|
|
51
125
|
...menuContext
|
|
52
126
|
} = useMenuContext();
|
|
53
127
|
const actualTheme = useThemeWithUndefined(menuContext.theme ?? theme);
|
|
54
128
|
const [thisRef, setThisRef] = useState(null);
|
|
55
|
-
|
|
56
|
-
return () => unregisterItem(thisRef);
|
|
57
|
-
}, [unregisterItem, thisRef]);
|
|
58
|
-
let autoTag = 'span';
|
|
129
|
+
let autoTag = "span";
|
|
59
130
|
|
|
60
131
|
if (restProps.href) {
|
|
61
|
-
autoTag =
|
|
62
|
-
} else
|
|
63
|
-
|
|
132
|
+
autoTag = "a";
|
|
133
|
+
} else {
|
|
134
|
+
if (restProps.onClick) {
|
|
135
|
+
autoTag = "button";
|
|
136
|
+
}
|
|
64
137
|
}
|
|
65
138
|
|
|
66
139
|
const Tag = menuContext.itemTag ?? tag ?? autoTag;
|
|
67
|
-
const actualIconPlacement = menuContext.iconPlacement ?? iconPlacement ??
|
|
140
|
+
const actualIconPlacement = menuContext.iconPlacement ?? iconPlacement ?? "left";
|
|
68
141
|
const actualMode = menuContext.mode ?? mode;
|
|
69
142
|
const actualSize = menuContext.size ?? size;
|
|
70
|
-
const actualDisableCursor = menuContext.disableCursor ?? disableCursor;
|
|
71
143
|
const resizeIcons = menuContext.resizeIcons ?? false;
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
144
|
+
const actualDisabled = menuContext.disabled || disabled;
|
|
145
|
+
const iconElement = /*#__PURE__*/ /*#__PURE__*/React.isValidElement(icon) ? /*#__PURE__*/cloneElement(icon, {
|
|
146
|
+
className: cn(icon.props.className, styles.icon, styles.customIcon, resizeIcons && styles.resizedIcon),
|
|
147
|
+
"data-render-all-sizes": true
|
|
75
148
|
}) : null;
|
|
76
|
-
|
|
149
|
+
let t4;
|
|
150
|
+
|
|
151
|
+
if ($[18] !== hoverIcon) {
|
|
152
|
+
t4 = /*#__PURE__*/React.isValidElement(hoverIcon);
|
|
153
|
+
$[18] = hoverIcon;
|
|
154
|
+
$[19] = t4;
|
|
155
|
+
} else {
|
|
156
|
+
t4 = $[19];
|
|
157
|
+
}
|
|
77
158
|
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
159
|
+
const hasHoverIcon = t4;
|
|
160
|
+
const rovingTabIndex = currentActiveItemEl === thisRef ? 0 : -1;
|
|
161
|
+
let resolvedTabIndex = tabIndex ?? 0;
|
|
81
162
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
163
|
+
if (keyboardNavigationEnabled) {
|
|
164
|
+
resolvedTabIndex = rovingTabIndex;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (actualDisabled) {
|
|
168
|
+
resolvedTabIndex = -1;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
useEffect(() => {
|
|
172
|
+
if (!thisRef || actualDisabled || !registerItem) {
|
|
173
|
+
return;
|
|
86
174
|
}
|
|
87
|
-
};
|
|
88
175
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
176
|
+
registerItem(thisRef);
|
|
177
|
+
return () => unregisterItem?.(thisRef);
|
|
178
|
+
}, [actualDisabled, registerItem, thisRef, unregisterItem]);
|
|
179
|
+
let t5;
|
|
180
|
+
|
|
181
|
+
if ($[20] !== ref) {
|
|
182
|
+
t5 = r => {
|
|
183
|
+
if (r) {
|
|
184
|
+
setThisRef(r);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (typeof ref === "function") {
|
|
188
|
+
ref(r);
|
|
189
|
+
} else {
|
|
190
|
+
if (ref != null && typeof ref === "object") {
|
|
191
|
+
ref.current = r;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
$[20] = ref;
|
|
197
|
+
$[21] = t5;
|
|
198
|
+
} else {
|
|
199
|
+
t5 = $[21];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const handleRef = t5;
|
|
203
|
+
let t6;
|
|
204
|
+
|
|
205
|
+
if ($[22] !== onItemKeyDown || $[23] !== onKeyDown || $[24] !== thisRef) {
|
|
206
|
+
t6 = e => {
|
|
207
|
+
onKeyDown?.(e);
|
|
208
|
+
|
|
209
|
+
if (e.defaultPrevented || !onItemKeyDown) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (thisRef) {
|
|
214
|
+
onItemKeyDown(e, thisRef);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
$[22] = onItemKeyDown;
|
|
219
|
+
$[23] = onKeyDown;
|
|
220
|
+
$[24] = thisRef;
|
|
221
|
+
$[25] = t6;
|
|
222
|
+
} else {
|
|
223
|
+
t6 = $[25];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const handleKeyDown = t6;
|
|
227
|
+
let t7;
|
|
228
|
+
|
|
229
|
+
if ($[26] !== onFocus || $[27] !== onItemFocus || $[28] !== thisRef) {
|
|
230
|
+
t7 = e_0 => {
|
|
231
|
+
onFocus?.(e_0);
|
|
92
232
|
|
|
93
|
-
if (
|
|
94
|
-
|
|
233
|
+
if (onItemFocus && thisRef) {
|
|
234
|
+
onItemFocus(thisRef);
|
|
95
235
|
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
$[26] = onFocus;
|
|
239
|
+
$[27] = onItemFocus;
|
|
240
|
+
$[28] = thisRef;
|
|
241
|
+
$[29] = t7;
|
|
242
|
+
} else {
|
|
243
|
+
t7 = $[29];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const handleFocus = t7;
|
|
247
|
+
let t8;
|
|
248
|
+
|
|
249
|
+
if ($[30] !== onItemMouseEnter || $[31] !== onMouseEnter || $[32] !== thisRef) {
|
|
250
|
+
t8 = e_1 => {
|
|
251
|
+
onMouseEnter?.(e_1);
|
|
252
|
+
|
|
253
|
+
if (onItemMouseEnter && thisRef) {
|
|
254
|
+
onItemMouseEnter(thisRef);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
$[30] = onItemMouseEnter;
|
|
259
|
+
$[31] = onMouseEnter;
|
|
260
|
+
$[32] = thisRef;
|
|
261
|
+
$[33] = t8;
|
|
262
|
+
} else {
|
|
263
|
+
t8 = $[33];
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const handleMouseEnter = t8;
|
|
267
|
+
let hoverIconWillReplace = "none";
|
|
268
|
+
|
|
269
|
+
if (hasHoverIcon && iconElement && actualIconPlacement === "right") {
|
|
270
|
+
hoverIconWillReplace = "custom";
|
|
271
|
+
} else {
|
|
272
|
+
if (hasHoverIcon && selected) {
|
|
273
|
+
hoverIconWillReplace = "selected";
|
|
96
274
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const Wrapper = wrapWithLi ?
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const Wrapper = wrapWithLi ? "li" : "div";
|
|
278
|
+
const t9 = ICON_PLACEMENT_STYLES[actualIconPlacement];
|
|
279
|
+
const t10 = MODE_STYLES[actualMode];
|
|
280
|
+
const t11 = SIZE_STYLES[actualSize];
|
|
281
|
+
const t12 = THEME_STYLES[actualTheme];
|
|
282
|
+
let t13;
|
|
283
|
+
|
|
284
|
+
if ($[34] !== className || $[35] !== t10 || $[36] !== t11 || $[37] !== t12 || $[38] !== t9) {
|
|
285
|
+
t13 = cn(styles.wrapper, className, t9, t10, t11, t12);
|
|
286
|
+
$[34] = className;
|
|
287
|
+
$[35] = t10;
|
|
288
|
+
$[36] = t11;
|
|
289
|
+
$[37] = t12;
|
|
290
|
+
$[38] = t9;
|
|
291
|
+
$[39] = t13;
|
|
292
|
+
} else {
|
|
293
|
+
t13 = $[39];
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const t14 = "menu-item__wrapper";
|
|
297
|
+
const t15 = "menu__menu-item";
|
|
298
|
+
const t16 = keyboardNavigationEnabled ? "presentation" : undefined;
|
|
299
|
+
const t17 = cn(styles.menuItem, actualDisabled && styles.disabled, selected && styles.selected, HOVER_ICON_WILL_REPLACE_STYLES[hoverIconWillReplace]);
|
|
300
|
+
const t18 = restProps["data-test"] ?? "menu-item";
|
|
301
|
+
const t19 = "menu__menu-item__inner";
|
|
302
|
+
const t20 = role ?? (keyboardNavigationEnabled ? "option" : undefined);
|
|
303
|
+
const t21 = keyboardNavigationEnabled && selected !== undefined ? selected : restProps["aria-selected"];
|
|
304
|
+
const t22 = keyboardNavigationEnabled && actualDisabled ? true : restProps["aria-disabled"];
|
|
305
|
+
const t23 = styles;
|
|
306
|
+
let t24;
|
|
307
|
+
|
|
308
|
+
if ($[40] !== children) {
|
|
309
|
+
t24 = /*#__PURE__*/React.createElement("span", {
|
|
310
|
+
className: styles.content
|
|
311
|
+
}, children);
|
|
312
|
+
$[40] = children;
|
|
313
|
+
$[41] = t24;
|
|
314
|
+
} else {
|
|
315
|
+
t24 = $[41];
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const t25 = selected && /*#__PURE__*/React.createElement(CheckOutlineIcon, {
|
|
319
|
+
className: cn(styles.icon, styles.selectedIcon, resizeIcons && styles.resizedIcon),
|
|
320
|
+
"data-test": "menu-item__selected-icon",
|
|
321
|
+
"data-render-all-sizes": true
|
|
322
|
+
});
|
|
323
|
+
const t26 = hasHoverIcon && /*#__PURE__*/React.cloneElement(hoverIcon, {
|
|
324
|
+
className: cn(hoverIcon.props.className, styles.icon, styles.hoverIcon, resizeIcons && styles.resizedIcon, hoverIconWillReplace !== "none" && styles.hoverIconNoReserve),
|
|
325
|
+
"data-render-all-sizes": true
|
|
326
|
+
});
|
|
327
|
+
let t27;
|
|
328
|
+
|
|
329
|
+
if ($[42] !== t23.contentWrapper || $[43] !== t24 || $[44] !== t25 || $[45] !== t26) {
|
|
330
|
+
t27 = /*#__PURE__*/React.createElement("span", {
|
|
331
|
+
className: t23.contentWrapper
|
|
332
|
+
}, t24, t25, t26);
|
|
333
|
+
$[42] = t23.contentWrapper;
|
|
334
|
+
$[43] = t24;
|
|
335
|
+
$[44] = t25;
|
|
336
|
+
$[45] = t26;
|
|
337
|
+
$[46] = t27;
|
|
338
|
+
} else {
|
|
339
|
+
t27 = $[46];
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
let t28;
|
|
343
|
+
|
|
344
|
+
if ($[47] !== Tag || $[48] !== handleFocus || $[49] !== handleKeyDown || $[50] !== handleMouseEnter || $[51] !== handleRef || $[52] !== iconElement || $[53] !== resolvedTabIndex || $[54] !== restProps || $[55] !== t17 || $[56] !== t18 || $[57] !== t20 || $[58] !== t21 || $[59] !== t22 || $[60] !== t27) {
|
|
345
|
+
t28 = /*#__PURE__*/React.createElement(Tag, _extends({}, restProps, {
|
|
346
|
+
onFocus: handleFocus,
|
|
347
|
+
onKeyDown: handleKeyDown,
|
|
348
|
+
onMouseEnter: handleMouseEnter,
|
|
349
|
+
ref: handleRef,
|
|
350
|
+
className: t17,
|
|
351
|
+
"data-test": t18,
|
|
352
|
+
"data-rs-internal": t19,
|
|
353
|
+
role: t20,
|
|
354
|
+
"aria-selected": t21,
|
|
355
|
+
"aria-disabled": t22,
|
|
356
|
+
tabIndex: resolvedTabIndex
|
|
357
|
+
}), iconElement, t27);
|
|
358
|
+
$[47] = Tag;
|
|
359
|
+
$[48] = handleFocus;
|
|
360
|
+
$[49] = handleKeyDown;
|
|
361
|
+
$[50] = handleMouseEnter;
|
|
362
|
+
$[51] = handleRef;
|
|
363
|
+
$[52] = iconElement;
|
|
364
|
+
$[53] = resolvedTabIndex;
|
|
365
|
+
$[54] = restProps;
|
|
366
|
+
$[55] = t17;
|
|
367
|
+
$[56] = t18;
|
|
368
|
+
$[57] = t20;
|
|
369
|
+
$[58] = t21;
|
|
370
|
+
$[59] = t22;
|
|
371
|
+
$[60] = t27;
|
|
372
|
+
$[61] = t28;
|
|
373
|
+
} else {
|
|
374
|
+
t28 = $[61];
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
let t29;
|
|
378
|
+
|
|
379
|
+
if ($[62] !== Wrapper || $[63] !== t13 || $[64] !== t16 || $[65] !== t28) {
|
|
380
|
+
t29 = /*#__PURE__*/React.createElement(Wrapper, {
|
|
381
|
+
className: t13,
|
|
382
|
+
"data-test": t14,
|
|
383
|
+
"data-rs-internal": t15,
|
|
384
|
+
role: t16
|
|
385
|
+
}, t28);
|
|
386
|
+
$[62] = Wrapper;
|
|
387
|
+
$[63] = t13;
|
|
388
|
+
$[64] = t16;
|
|
389
|
+
$[65] = t28;
|
|
390
|
+
$[66] = t29;
|
|
391
|
+
} else {
|
|
392
|
+
t29 = $[66];
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
return t29;
|
|
115
396
|
};
|
|
116
397
|
|
|
117
398
|
const MenuItem = /*#__PURE__*/React.forwardRef(MenuItemInner);
|
|
@@ -119,15 +400,11 @@ MenuItem.propTypes = {
|
|
|
119
400
|
size: PropTypes.oneOf(['l', 'm', 's']),
|
|
120
401
|
mode: PropTypes.oneOf(['clear', 'classic', 'rock']),
|
|
121
402
|
theme: PropTypes.oneOf(['light', 'dark']),
|
|
122
|
-
onClick: PropTypes.func,
|
|
123
403
|
disabled: PropTypes.bool,
|
|
124
|
-
disableCursor: PropTypes.bool,
|
|
125
404
|
selected: PropTypes.bool,
|
|
126
|
-
|
|
127
|
-
/** @ignore */
|
|
128
|
-
highlighted: PropTypes.bool,
|
|
129
405
|
icon: PropTypes.element,
|
|
130
406
|
iconPlacement: PropTypes.oneOf(['left', 'right']),
|
|
131
|
-
tag: PropTypes.elementType
|
|
407
|
+
tag: PropTypes.elementType,
|
|
408
|
+
hoverIcon: PropTypes.element
|
|
132
409
|
};
|
|
133
410
|
export { MenuItem, MenuItem as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare function getFirstItem(sortedItems: HTMLElement[]): HTMLElement;
|
|
2
2
|
export declare function getLastItem(sortedItems: HTMLElement[]): HTMLElement;
|
|
3
|
-
export declare function getNextItem(sortedItems: HTMLElement[], activeItem
|
|
4
|
-
export declare function getPrevItem(sortedItems: HTMLElement[], activeItem
|
|
3
|
+
export declare function getNextItem(sortedItems: HTMLElement[], activeItem?: HTMLElement): HTMLElement;
|
|
4
|
+
export declare function getPrevItem(sortedItems: HTMLElement[], activeItem?: HTMLElement): HTMLElement;
|
|
5
5
|
export declare function htmlElementsComparator(a: HTMLElement, b: HTMLElement): 0 | 1 | -1;
|