@redocly/theme 0.82.4-rc.1 → 0.83.0-rc.1
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/components/Dropdown/Dropdown.d.ts +2 -1
- package/lib/components/Dropdown/Dropdown.js +3 -5
- package/lib/components/Dropdown/DropdownMenuItem.js +8 -8
- package/lib/components/Menu/MenuItem.js +1 -1
- package/package.json +16 -16
- package/src/components/Dropdown/Dropdown.tsx +5 -3
- package/src/components/Dropdown/DropdownMenuItem.tsx +8 -8
- package/src/components/Menu/MenuItem.tsx +6 -1
|
@@ -10,5 +10,6 @@ export type DropdownProps = PropsWithChildren<{
|
|
|
10
10
|
dataAttributes?: Record<string, string>;
|
|
11
11
|
className?: string;
|
|
12
12
|
withArrow?: boolean;
|
|
13
|
+
onClick?: (event: React.UIEvent) => void;
|
|
13
14
|
}>;
|
|
14
|
-
export declare function Dropdown({ children, className, active, trigger, triggerEvent, closeOnClick, withArrow, dataAttributes, placement, alignment, }: DropdownProps): JSX.Element;
|
|
15
|
+
export declare function Dropdown({ children, className, active, trigger, triggerEvent, closeOnClick, withArrow, dataAttributes, placement, alignment, onClick, }: DropdownProps): JSX.Element;
|
|
@@ -32,7 +32,7 @@ const styled_components_1 = __importDefault(require("styled-components"));
|
|
|
32
32
|
const hooks_1 = require("../../core/hooks");
|
|
33
33
|
const ChevronDownIcon_1 = require("../../icons/ChevronDownIcon/ChevronDownIcon");
|
|
34
34
|
const ChevronUpIcon_1 = require("../../icons/ChevronUpIcon/ChevronUpIcon");
|
|
35
|
-
function Dropdown({ children, className, active, trigger, triggerEvent = 'click', closeOnClick = true, withArrow, dataAttributes, placement, alignment, }) {
|
|
35
|
+
function Dropdown({ children, className, active, trigger, triggerEvent = 'click', closeOnClick = true, withArrow, dataAttributes, placement, alignment, onClick, }) {
|
|
36
36
|
const dropdownRef = (0, react_1.useRef)(null);
|
|
37
37
|
const [isOpen, setIsOpen] = (0, hooks_1.useControlledState)(false, active);
|
|
38
38
|
const handleOpen = () => {
|
|
@@ -41,9 +41,7 @@ function Dropdown({ children, className, active, trigger, triggerEvent = 'click'
|
|
|
41
41
|
const handleClose = () => {
|
|
42
42
|
setIsOpen(false);
|
|
43
43
|
};
|
|
44
|
-
const handleChildClick = (
|
|
45
|
-
event.stopPropagation();
|
|
46
|
-
event.preventDefault();
|
|
44
|
+
const handleChildClick = () => {
|
|
47
45
|
handleClose();
|
|
48
46
|
};
|
|
49
47
|
const handleToggle = (event) => {
|
|
@@ -59,7 +57,7 @@ function Dropdown({ children, className, active, trigger, triggerEvent = 'click'
|
|
|
59
57
|
(0, hooks_1.useOutsideClick)(dropdownRef, handleClose);
|
|
60
58
|
const triggerChild = react_1.default.Children.only(trigger);
|
|
61
59
|
const dropdownTrigger = (0, react_1.cloneElement)(triggerChild, Object.assign(Object.assign(Object.assign(Object.assign({ onClick: triggerEvent === 'click' ? handleToggle : undefined, icon: withArrow ? isOpen ? react_1.default.createElement(ChevronUpIcon_1.ChevronUpIcon, null) : react_1.default.createElement(ChevronDownIcon_1.ChevronDownIcon, null) : undefined }, (withArrow ? { iconPosition: 'right' } : {})), { tabIndex: 0 }), triggerChild.props), { onKeyDown: triggerEvent === 'click' ? handleKeyDown : undefined }));
|
|
62
|
-
return (react_1.default.createElement(DropdownWrapper, Object.assign({ "data-component-name": "Dropdown/Dropdown", "data-testid": "dropdown" }, dataAttributes, { className: className, ref: dropdownRef, onPointerEnter: triggerEvent === 'hover' ? handleOpen : undefined, onPointerLeave: triggerEvent === 'hover' ? handleClose : undefined }),
|
|
60
|
+
return (react_1.default.createElement(DropdownWrapper, Object.assign({ "data-component-name": "Dropdown/Dropdown", "data-testid": "dropdown" }, dataAttributes, { className: className, ref: dropdownRef, onPointerEnter: triggerEvent === 'hover' ? handleOpen : undefined, onPointerLeave: triggerEvent === 'hover' ? handleClose : undefined, onClick: onClick }),
|
|
63
61
|
dropdownTrigger,
|
|
64
62
|
isOpen && (react_1.default.createElement(ChildrenWrapper, { placement: placement, alignment: alignment, onClick: closeOnClick ? handleChildClick : undefined }, children))));
|
|
65
63
|
}
|
|
@@ -90,6 +90,14 @@ const DropdownMenuItemWrapper = styled_components_1.default.li `
|
|
|
90
90
|
outline: 1px solid var(--dropdown-menu-item-border-color-focused);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
background-color: var(--dropdown-menu-item-bg-color);
|
|
94
|
+
color: var(--dropdown-menu-item-color);
|
|
95
|
+
|
|
96
|
+
&:hover {
|
|
97
|
+
background-color: var(--dropdown-menu-item-bg-color-hover);
|
|
98
|
+
color: var(--dropdown-menu-item-color-hover);
|
|
99
|
+
}
|
|
100
|
+
|
|
93
101
|
${({ separator }) => separator &&
|
|
94
102
|
(0, styled_components_1.css) `
|
|
95
103
|
cursor: default;
|
|
@@ -99,9 +107,6 @@ const DropdownMenuItemWrapper = styled_components_1.default.li `
|
|
|
99
107
|
--dropdown-menu-item-bg-color-hover: var(--dropdown-menu-item-bg-color);
|
|
100
108
|
`}
|
|
101
109
|
|
|
102
|
-
background-color: var(--dropdown-menu-item-bg-color);
|
|
103
|
-
color: var(--dropdown-menu-item-color);
|
|
104
|
-
|
|
105
110
|
${({ active }) => active &&
|
|
106
111
|
(0, styled_components_1.css) `
|
|
107
112
|
background-color: var(--dropdown-menu-item-bg-color-active);
|
|
@@ -111,11 +116,6 @@ const DropdownMenuItemWrapper = styled_components_1.default.li `
|
|
|
111
116
|
}
|
|
112
117
|
`}
|
|
113
118
|
|
|
114
|
-
&:hover {
|
|
115
|
-
background-color: var(--dropdown-menu-item-bg-color-hover);
|
|
116
|
-
color: var(--dropdown-menu-item-color-hover);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
119
|
${({ disabled }) => disabled &&
|
|
120
120
|
(0, styled_components_1.css) `
|
|
121
121
|
cursor: default;
|
|
@@ -73,7 +73,7 @@ function MenuItem(props) {
|
|
|
73
73
|
isDrilldown ? react_1.default.createElement(ArrowRightIcon_1.ArrowRightIcon, { size: "12px" }) : null,
|
|
74
74
|
isOperation ? (react_1.default.createElement(HttpTag_1.HttpTag, { color: item.httpVerb || '' }, item.httpVerb === 'hook' ? 'event' : item.httpVerb)) : null));
|
|
75
75
|
return (react_1.default.createElement(MenuItemWrapper, { "data-component-name": "Menu/MenuItem", className: generateClassName({ type, item, className }) },
|
|
76
|
-
item.link ? (react_1.default.createElement(MenuItemLink, { to: item.link, languageInsensitive: item.languageInsensitive }, label)) : (label),
|
|
76
|
+
item.link ? (react_1.default.createElement(MenuItemLink, { to: item.link, external: item.external, target: item.target, languageInsensitive: item.languageInsensitive }, label)) : (label),
|
|
77
77
|
isNested ? (react_1.default.createElement(MenuItemNestedWrapper, { depth: depth, ref: nestedMenuRef, style: style }, isExpanded || !canUnmount ? props.children : null)) : null,
|
|
78
78
|
item.separatorLine ? (react_1.default.createElement(MenuItemSeparatorLine, { depth: depth, linePosition: item.linePosition })) : null));
|
|
79
79
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.0-rc.1",
|
|
4
4
|
"description": "Shared UI components lib",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"theme",
|
|
@@ -35,18 +35,18 @@
|
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@markdoc/markdoc": "0.4.0",
|
|
38
|
-
"@storybook/addon-actions": "7.6.
|
|
39
|
-
"@storybook/addon-essentials": "7.6.
|
|
40
|
-
"@storybook/addon-interactions": "7.6.
|
|
41
|
-
"@storybook/addon-links": "7.6.
|
|
42
|
-
"@storybook/addon-viewport": "7.6.
|
|
43
|
-
"@storybook/addons": "7.6.
|
|
44
|
-
"@storybook/core-common": "7.6.
|
|
45
|
-
"@storybook/node-logger": "7.6.
|
|
46
|
-
"@storybook/react": "7.6.
|
|
47
|
-
"@storybook/react-webpack5": "7.6.
|
|
38
|
+
"@storybook/addon-actions": "7.6.19",
|
|
39
|
+
"@storybook/addon-essentials": "7.6.19",
|
|
40
|
+
"@storybook/addon-interactions": "7.6.19",
|
|
41
|
+
"@storybook/addon-links": "7.6.19",
|
|
42
|
+
"@storybook/addon-viewport": "7.6.19",
|
|
43
|
+
"@storybook/addons": "7.6.17",
|
|
44
|
+
"@storybook/core-common": "7.6.19",
|
|
45
|
+
"@storybook/node-logger": "7.6.19",
|
|
46
|
+
"@storybook/react": "7.6.19",
|
|
47
|
+
"@storybook/react-webpack5": "7.6.19",
|
|
48
48
|
"@storybook/testing-library": "0.2.2",
|
|
49
|
-
"@storybook/theming": "7.6.
|
|
49
|
+
"@storybook/theming": "7.6.19",
|
|
50
50
|
"@testing-library/jest-dom": "6.1.5",
|
|
51
51
|
"@testing-library/react": "14.1.2",
|
|
52
52
|
"@testing-library/user-event": "14.5.1",
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
"react-refresh": "0.14.2",
|
|
76
76
|
"react-router-dom": "6.21.1",
|
|
77
77
|
"rimraf": "5.0.5",
|
|
78
|
-
"storybook": "7.6.
|
|
79
|
-
"storybook-addon-pseudo-states": "2.1
|
|
80
|
-
"storybook-design-token": "3.
|
|
78
|
+
"storybook": "7.6.19",
|
|
79
|
+
"storybook-addon-pseudo-states": "2.2.1",
|
|
80
|
+
"storybook-design-token": "3.1.0",
|
|
81
81
|
"styled-components": "5.3.11",
|
|
82
82
|
"styled-system": "5.1.5",
|
|
83
83
|
"ts-jest": "29.1.2",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"timeago.js": "^4.0.2",
|
|
99
99
|
"i18next": "^22.4.12",
|
|
100
100
|
"nprogress": "^0.2.0",
|
|
101
|
-
"@redocly/config": "0.
|
|
101
|
+
"@redocly/config": "0.83.0-rc.1"
|
|
102
102
|
},
|
|
103
103
|
"scripts": {
|
|
104
104
|
"start": "npm-run-all --parallel storybook storybook:tokens:watch",
|
|
@@ -19,6 +19,8 @@ export type DropdownProps = PropsWithChildren<{
|
|
|
19
19
|
dataAttributes?: Record<string, string>;
|
|
20
20
|
className?: string;
|
|
21
21
|
withArrow?: boolean;
|
|
22
|
+
|
|
23
|
+
onClick?: (event: React.UIEvent) => void;
|
|
22
24
|
}>;
|
|
23
25
|
|
|
24
26
|
export function Dropdown({
|
|
@@ -32,6 +34,7 @@ export function Dropdown({
|
|
|
32
34
|
dataAttributes,
|
|
33
35
|
placement,
|
|
34
36
|
alignment,
|
|
37
|
+
onClick,
|
|
35
38
|
}: DropdownProps): JSX.Element {
|
|
36
39
|
const dropdownRef = useRef<HTMLDivElement | null>(null);
|
|
37
40
|
const [isOpen, setIsOpen] = useControlledState<boolean>(false, active);
|
|
@@ -44,9 +47,7 @@ export function Dropdown({
|
|
|
44
47
|
setIsOpen(false);
|
|
45
48
|
};
|
|
46
49
|
|
|
47
|
-
const handleChildClick = (
|
|
48
|
-
event.stopPropagation();
|
|
49
|
-
event.preventDefault();
|
|
50
|
+
const handleChildClick = () => {
|
|
50
51
|
handleClose();
|
|
51
52
|
};
|
|
52
53
|
|
|
@@ -84,6 +85,7 @@ export function Dropdown({
|
|
|
84
85
|
ref={dropdownRef}
|
|
85
86
|
onPointerEnter={triggerEvent === 'hover' ? handleOpen : undefined}
|
|
86
87
|
onPointerLeave={triggerEvent === 'hover' ? handleClose : undefined}
|
|
88
|
+
onClick={onClick}
|
|
87
89
|
>
|
|
88
90
|
{dropdownTrigger}
|
|
89
91
|
|
|
@@ -130,6 +130,14 @@ const DropdownMenuItemWrapper = styled.li<{
|
|
|
130
130
|
outline: 1px solid var(--dropdown-menu-item-border-color-focused);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
background-color: var(--dropdown-menu-item-bg-color);
|
|
134
|
+
color: var(--dropdown-menu-item-color);
|
|
135
|
+
|
|
136
|
+
&:hover {
|
|
137
|
+
background-color: var(--dropdown-menu-item-bg-color-hover);
|
|
138
|
+
color: var(--dropdown-menu-item-color-hover);
|
|
139
|
+
}
|
|
140
|
+
|
|
133
141
|
${({ separator }) =>
|
|
134
142
|
separator &&
|
|
135
143
|
css`
|
|
@@ -140,9 +148,6 @@ const DropdownMenuItemWrapper = styled.li<{
|
|
|
140
148
|
--dropdown-menu-item-bg-color-hover: var(--dropdown-menu-item-bg-color);
|
|
141
149
|
`}
|
|
142
150
|
|
|
143
|
-
background-color: var(--dropdown-menu-item-bg-color);
|
|
144
|
-
color: var(--dropdown-menu-item-color);
|
|
145
|
-
|
|
146
151
|
${({ active }) =>
|
|
147
152
|
active &&
|
|
148
153
|
css`
|
|
@@ -153,11 +158,6 @@ const DropdownMenuItemWrapper = styled.li<{
|
|
|
153
158
|
}
|
|
154
159
|
`}
|
|
155
160
|
|
|
156
|
-
&:hover {
|
|
157
|
-
background-color: var(--dropdown-menu-item-bg-color-hover);
|
|
158
|
-
color: var(--dropdown-menu-item-color-hover);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
161
|
${({ disabled }) =>
|
|
162
162
|
disabled &&
|
|
163
163
|
css`
|
|
@@ -98,7 +98,12 @@ export function MenuItem(props: React.PropsWithChildren<MenuItemProps>): JSX.Ele
|
|
|
98
98
|
className={generateClassName({ type, item, className })}
|
|
99
99
|
>
|
|
100
100
|
{item.link ? (
|
|
101
|
-
<MenuItemLink
|
|
101
|
+
<MenuItemLink
|
|
102
|
+
to={item.link}
|
|
103
|
+
external={item.external}
|
|
104
|
+
target={item.target}
|
|
105
|
+
languageInsensitive={item.languageInsensitive}
|
|
106
|
+
>
|
|
102
107
|
{label}
|
|
103
108
|
</MenuItemLink>
|
|
104
109
|
) : (
|