@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.
@@ -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 = (event) => {
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.82.4-rc.1",
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.4",
39
- "@storybook/addon-essentials": "7.6.4",
40
- "@storybook/addon-interactions": "7.6.4",
41
- "@storybook/addon-links": "7.6.4",
42
- "@storybook/addon-viewport": "7.6.4",
43
- "@storybook/addons": "7.6.4",
44
- "@storybook/core-common": "7.6.4",
45
- "@storybook/node-logger": "7.6.4",
46
- "@storybook/react": "7.6.4",
47
- "@storybook/react-webpack5": "7.6.4",
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.4",
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.4",
79
- "storybook-addon-pseudo-states": "2.1.2",
80
- "storybook-design-token": "3.0.0-beta.6",
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.82.4-rc.1"
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 = (event: React.UIEvent) => {
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 to={item.link} languageInsensitive={item.languageInsensitive}>
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
  ) : (