Skip to content

Commit 5abf296

Browse files
authored
Merge pull request #555 from rebeccaalpert/toggleprops
fix(ChatbotHeaderOptionsDropdown/ChatbotHeaderSelectorDropdown): Pass toggle props
2 parents 6eda9d8 + 9b19159 commit 5abf296

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

packages/module/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,13 @@ describe('ChatbotHeaderOptionsDropdown', () => {
4747
render(<ChatbotHeaderOptionsDropdown isCompact>{dropdownItems}</ChatbotHeaderOptionsDropdown>);
4848
expect(screen.getByRole('button', { name: 'Chatbot options' })).toHaveClass('pf-m-compact');
4949
});
50+
51+
it('should handle toggleProps', () => {
52+
render(
53+
<ChatbotHeaderOptionsDropdown isCompact toggleProps={{ isDisabled: true }}>
54+
{dropdownItems}
55+
</ChatbotHeaderOptionsDropdown>
56+
);
57+
expect(screen.getByRole('button', { name: /Chatbot options/i })).toBeDisabled();
58+
});
5059
});

packages/module/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import {
88
DropdownProps,
99
MenuToggle,
1010
MenuToggleElement,
11-
Icon
11+
Icon,
12+
MenuToggleProps
1213
} from '@patternfly/react-core';
1314
import EllipsisIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
1415

@@ -23,6 +24,8 @@ export interface ChatbotHeaderOptionsDropdownProps extends Omit<DropdownProps, '
2324
menuToggleAriaLabel?: string;
2425
/** Sets menu to compact styling. */
2526
isCompact?: boolean;
27+
/** Additional props passed to toggle */
28+
toggleProps?: MenuToggleProps;
2629
}
2730

2831
export const ChatbotHeaderOptionsDropdown: FunctionComponent<ChatbotHeaderOptionsDropdownProps> = ({
@@ -32,6 +35,7 @@ export const ChatbotHeaderOptionsDropdown: FunctionComponent<ChatbotHeaderOption
3235
tooltipProps,
3336
menuToggleAriaLabel = 'Chatbot options',
3437
isCompact,
38+
toggleProps,
3539
...props
3640
}: ChatbotHeaderOptionsDropdownProps) => {
3741
const [isOptionsMenuOpen, setIsOptionsMenuOpen] = useState(false);
@@ -58,6 +62,7 @@ export const ChatbotHeaderOptionsDropdown: FunctionComponent<ChatbotHeaderOption
5862
isExpanded={isOptionsMenuOpen}
5963
onClick={() => setIsOptionsMenuOpen(!isOptionsMenuOpen)}
6064
size={isCompact ? 'sm' : undefined}
65+
{...toggleProps}
6166
/>
6267
</Tooltip>
6368
);

packages/module/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,13 @@ describe('ChatbotHeaderSelectorDropdown', () => {
4949
);
5050
expect(screen.getByRole('button', { name: /Select model/i })).toHaveClass('pf-m-compact');
5151
});
52+
53+
it('should handle toggleProps', () => {
54+
render(
55+
<ChatbotHeaderSelectorDropdown value="Option 1" toggleProps={{ isDisabled: true }}>
56+
{dropdownItems}
57+
</ChatbotHeaderSelectorDropdown>
58+
);
59+
expect(screen.getByRole('button', { name: /Select model/i })).toBeDisabled();
60+
});
5261
});

packages/module/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import type { FunctionComponent, Ref } from 'react';
22
import { useState } from 'react';
33

4-
import { Tooltip, TooltipProps, Dropdown, DropdownProps, MenuToggle, MenuToggleElement } from '@patternfly/react-core';
4+
import {
5+
Tooltip,
6+
TooltipProps,
7+
Dropdown,
8+
DropdownProps,
9+
MenuToggle,
10+
MenuToggleElement,
11+
MenuToggleProps
12+
} from '@patternfly/react-core';
513

614
export interface ChatbotHeaderSelectorDropdownProps extends Omit<DropdownProps, 'toggle'> {
715
/** Value of the selected dropdown item */
@@ -18,6 +26,8 @@ export interface ChatbotHeaderSelectorDropdownProps extends Omit<DropdownProps,
1826
tooltipContent?: string;
1927
/** Sets menu to compact styling. */
2028
isCompact?: boolean;
29+
/** Additional props passed to toggle */
30+
toggleProps?: MenuToggleProps;
2131
}
2232

2333
export const ChatbotHeaderSelectorDropdown: FunctionComponent<ChatbotHeaderSelectorDropdownProps> = ({
@@ -29,6 +39,7 @@ export const ChatbotHeaderSelectorDropdown: FunctionComponent<ChatbotHeaderSelec
2939
tooltipContent = 'Select model',
3040
menuToggleAriaLabel,
3141
isCompact,
42+
toggleProps,
3243
...props
3344
}: ChatbotHeaderSelectorDropdownProps) => {
3445
const [isOptionsMenuOpen, setIsOptionsMenuOpen] = useState(false);
@@ -51,6 +62,7 @@ export const ChatbotHeaderSelectorDropdown: FunctionComponent<ChatbotHeaderSelec
5162
onClick={() => setIsOptionsMenuOpen(!isOptionsMenuOpen)}
5263
size={isCompact ? 'sm' : undefined}
5364
className={`${isCompact ? 'pf-m-compact' : ''}`}
65+
{...toggleProps}
5466
>
5567
{value}
5668
</MenuToggle>

0 commit comments

Comments
 (0)