Add title for screen reader only to dropdown button

This commit is contained in:
Alex Erdei 2025-05-09 00:08:54 +01:00
parent db89b37c42
commit 6b57cf209c
3 changed files with 91 additions and 30 deletions

View File

@ -0,0 +1,25 @@
import React from "react";
// For Bootstrap 4: use "sr-only" for visually hidden text
const CustomToggle = React.forwardRef(({ onClick }, ref) => (
<button
ref={ref}
className='btn dropdown-toggle custom-drop-down-btn'
aria-label='Account menu'
data-toggle='dropdown'
aria-haspopup='true'
aria-expanded='false'
type='button'
onClick={(e) => {
e.preventDefault();
onClick(e);
}}
>
<span className='sr-only'>Account menu</span>
{/* Bootstrap's caret will appear via .dropdown-toggle CSS */}
</button>
));
export default CustomToggle;

View File

@ -45,6 +45,37 @@
left: 0;
}
.custom-drop-down-btn .dropdown-toggle {
display: flex;
align-items: center;
justify-content: center;
width: 1.7em; /* as in your original custom-drop-down-btn styling */
height: 1.7em;
padding: 0 !important; /* Remove Bootstrap padding */
background: #e9ecef !important;
border-radius: 1.7em;
border: 1px solid #e9ecef !important;
box-shadow: none;
/* You can adjust height/width for your visual design */
}
/* Target the caret in the dropdown toggle and move it left and down */
.custom-drop-down-btn .dropdown-toggle::after {
margin-left: 0 !important; /* Remove any left margin */
transform: translate(0, 2px); /* Move caret left (0px) and down (+2px) */
/* Try larger/smaller values if needed */
}
/* If you want to be very precise... */
.custom-drop-down-btn .dropdown-toggle {
display: flex;
align-items: center;
justify-content: center;
padding: 0 !important;
}
@media (max-width: 640px) {
.spaceing,
.first {

View File

@ -1,5 +1,5 @@
import React, { useRef } from "react";
import { Navbar, Nav, Dropdown, DropdownButton } from "react-bootstrap";
import { Navbar, Nav, Dropdown } from "react-bootstrap";
import { Link } from "react-router-dom";
import { VscHome } from "react-icons/vsc";
import { FaFacebook } from "react-icons/fa";
@ -14,6 +14,7 @@ import { useEffect } from "react";
import { handleClickLink } from "./helper";
import { linkUpdated } from "../features/link/linkSlice";
import { friendsListPageSet } from "../features/accountPage/accountPageSlice";
import CustomToggle from "./CustomToggle";
const TitleBar = () => {
const refs = {
@ -97,35 +98,39 @@ const TitleBar = () => {
</Link>
</Nav.Item>
<Nav.Item className='align-self-center'>
<DropdownButton
title=''
className='mr-4 custom-drop-down-btn'
menuAlign='right'
>
<Dropdown.Item
as={Link}
to={profileLink}
onClick={closeFriendsListPage}
>
<ProfileLink
user={user}
size='60'
fullname='true'
bold='true'
/>
</Dropdown.Item>
<Dropdown.Divider />
<Dropdown.Item
as={Link}
to='/'
onClick={handleClick}
className='p-0'
>
<ImExit fontSize='1.5em' className='mx-4' />
<span>Log Out</span>
<div style={{ width: "20em" }}></div>
</Dropdown.Item>
</DropdownButton>
<Dropdown className='mr-4 custom-drop-down-btn'>
<Dropdown.Toggle as={CustomToggle} />
<Dropdown.Menu alignRight>
<Dropdown.Item
as={Link}
to={profileLink}
onClick={closeFriendsListPage}
>
<ProfileLink
user={user}
size='60'
fullname='true'
bold='true'
/>
</Dropdown.Item>
<Dropdown.Divider />
<Dropdown.Item
as={Link}
to='/'
onClick={handleClick}
className='p-0'
>
<ImExit fontSize='1.5em' className='mx-4' />
<span>Log Out</span>
<div style={{ width: "20em" }}></div>
</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
</Nav.Item>
</Nav>
</Navbar>