Skip to content

Commit 2ed7aae

Browse files
committed
feat(CDropdownToggle): add splitLabel prop for customizable screen reader text
1 parent e6c3def commit 2ed7aae

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

packages/coreui-react/src/components/dropdown/CDropdownToggle.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ export interface CDropdownToggleProps extends Omit<CButtonProps, 'type'> {
3434
*/
3535
split?: boolean
3636

37+
/**
38+
* Screen reader label for split button dropdown toggle.
39+
*
40+
* @default 'Toggle Dropdown'
41+
* @since 5.9.0
42+
*/
43+
splitLabel?: string
44+
3745
/**
3846
* Sets which event handlers you'd like provided to your toggle prop. You can
3947
* specify one trigger or an array of them.
@@ -50,6 +58,7 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
5058
className,
5159
navLink = true,
5260
split,
61+
splitLabel = 'Toggle Dropdown',
5362
trigger = 'click',
5463
...rest
5564
}) => {
@@ -117,7 +126,7 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
117126
return (
118127
<CButton {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
119128
{children}
120-
{split && <span className="visually-hidden">Toggle Dropdown</span>}
129+
{split && <span className="visually-hidden">{splitLabel}</span>}
121130
</CButton>
122131
)
123132
}
@@ -128,6 +137,7 @@ CDropdownToggle.propTypes = {
128137
className: PropTypes.string,
129138
custom: PropTypes.bool,
130139
split: PropTypes.bool,
140+
splitLabel: PropTypes.string,
131141
trigger: triggerPropType,
132142
}
133143

packages/docs/content/api/CDropdownToggle.api.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,16 @@ import CDropdownToggle from '@coreui/react/src/components/dropdown/CDropdownTogg
145145
<p>Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of <code>{`.dropdown-toggle-split`}</code> className for proper spacing around the dropdown caret.</p>
146146
</td>
147147
</tr>
148+
<tr id="cdropdowntoggle-split-label">
149+
<td className="text-primary fw-semibold">splitLabel<a href="#cdropdowntoggle-split-label" aria-label="CDropdownToggle splitLabel permalink" className="anchor-link after">#</a><span className="badge bg-success">5.9.0+</span></td>
150+
<td><code>{`Toggle Dropdown`}</code></td>
151+
<td><code>{`string`}</code></td>
152+
</tr>
153+
<tr>
154+
<td colSpan="3">
155+
<p>Screen reader label for split button dropdown toggle.</p>
156+
</td>
157+
</tr>
148158
<tr id="cdropdowntoggle-trigger">
149159
<td className="text-primary fw-semibold">trigger<a href="#cdropdowntoggle-trigger" aria-label="CDropdownToggle trigger permalink" className="anchor-link after">#</a></td>
150160
<td><code>{`click`}</code></td>

packages/docs/content/components/dropdown/examples/DropdownDropendExample.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const DropdownDropendExample = () => {
2424

2525
<CDropdown variant="btn-group" direction="dropend">
2626
<CButton color="secondary">Small split button</CButton>
27-
<CDropdownToggle color="secondary" split />
27+
<CDropdownToggle color="secondary" split splitLabel="Toggle Dropend" />
2828
<CDropdownMenu>
2929
<CDropdownItem href="#">Action</CDropdownItem>
3030
<CDropdownItem href="#">Another action</CDropdownItem>

packages/docs/content/components/dropdown/examples/DropdownDropstartExample.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const DropdownDropstartExample = () => {
2525

2626
<CButtonGroup>
2727
<CDropdown variant="btn-group" direction="dropstart">
28-
<CDropdownToggle color="secondary" split />
28+
<CDropdownToggle color="secondary" split splitLabel="Toggle Dropstart" />
2929
<CDropdownMenu>
3030
<CDropdownItem href="#">Action</CDropdownItem>
3131
<CDropdownItem href="#">Another action</CDropdownItem>

0 commit comments

Comments
 (0)