[MM-61674]: Added appropriate roles to the menu component of post priority (#29545)

Этот коммит содержится в:
ayush-chauhan233
2025-01-28 12:40:02 +05:30
коммит произвёл GitHub
родитель 8b5a3e6217
Коммит ed161f31be
10 изменённых файлов: 99 добавлений и 83 удалений

Просмотреть файл

@@ -140,7 +140,7 @@ describe('SupportSettings', () => {
cy.uiOpenProductMenu().within(() => { cy.uiOpenProductMenu().within(() => {
// * Verify that 'Download Apps' has expected link // * Verify that 'Download Apps' has expected link
cy.findByText('Download Apps'). cy.findByText('Download Apps').
parent(). parents('a').
should('have.attr', 'href', link); should('have.attr', 'href', link);
}); });
}); });

Просмотреть файл

@@ -61,6 +61,7 @@ const ProductMenuItem = ({icon, destination, text, active, onClick, tourTip, id}
to={destination} to={destination}
onClick={onClick} onClick={onClick}
id={id} id={id}
role='menuitem'
> >
<ProductIcon <ProductIcon
size={24} size={24}

Просмотреть файл

@@ -501,6 +501,7 @@ exports[`components/global/product_switcher_menu should show integrations should
<li <li
className="MenuGroup menu-divider" className="MenuGroup menu-divider"
onClick={[Function]} onClick={[Function]}
role="separator"
/> />
<div <div
onClick={[Function]} onClick={[Function]}

Просмотреть файл

@@ -141,82 +141,94 @@ function PostPriorityPicker({
defaultMessage: 'Message priority', defaultMessage: 'Message priority',
})} })}
</Header> </Header>
<div role='application'> <Menu
<Menu className='Menu'> className='Menu'
role='menu'
>
<MenuGroup>
<MenuItem
id='menu-item-priority-standard'
onClick={makeOnSelectPriority()}
isSelected={!priority}
icon={<StandardIcon size={18}/>}
text={formatMessage({
id: 'post_priority.priority.standard',
defaultMessage: 'Standard',
})}
/>
<MenuItem
id='menu-item-priority-important'
onClick={makeOnSelectPriority(PostPriority.IMPORTANT)}
isSelected={priority === PostPriority.IMPORTANT}
icon={<ImportantIcon size={18}/>}
text={formatMessage({
id: 'post_priority.priority.important',
defaultMessage: 'Important',
})}
/>
<MenuItem
id='menu-item-priority-urgent'
onClick={makeOnSelectPriority(PostPriority.URGENT)}
isSelected={priority === PostPriority.URGENT}
icon={<UrgentIcon size={18}/>}
text={formatMessage({
id: 'post_priority.priority.urgent',
defaultMessage: 'Urgent',
})}
/>
</MenuGroup>
{(postAcknowledgementsEnabled || persistentNotificationsEnabled) && (
<MenuGroup> <MenuGroup>
<MenuItem <li
id='menu-item-priority-standard' role='none'
onClick={makeOnSelectPriority()} style={{all: 'unset'}}
isSelected={!priority} >
icon={<StandardIcon size={18}/>} <ul
text={formatMessage({ role='group'
id: 'post_priority.priority.standard', aria-label='Message and Notification Settings'
defaultMessage: 'Standard', style={{all: 'unset'}}
})} >
/> {postAcknowledgementsEnabled && (
<MenuItem <ToggleItem
id='menu-item-priority-important' disabled={false}
onClick={makeOnSelectPriority(PostPriority.IMPORTANT)} onClick={handleAck}
isSelected={priority === PostPriority.IMPORTANT} toggled={requestedAck}
icon={<ImportantIcon size={18}/>} icon={<AcknowledgementIcon size={18}/>}
text={formatMessage({ text={formatMessage({
id: 'post_priority.priority.important', id: 'post_priority.requested_ack.text',
defaultMessage: 'Important', defaultMessage: 'Request acknowledgement',
})} })}
/> description={formatMessage({
<MenuItem id: 'post_priority.requested_ack.description',
id='menu-item-priority-urgent' defaultMessage: 'An acknowledgement button will appear with your message',
onClick={makeOnSelectPriority(PostPriority.URGENT)} })}
isSelected={priority === PostPriority.URGENT} />
icon={<UrgentIcon size={18}/>} )}
text={formatMessage({ {priority === PostPriority.URGENT && persistentNotificationsEnabled && (
id: 'post_priority.priority.urgent', <ToggleItem
defaultMessage: 'Urgent', disabled={priority !== PostPriority.URGENT}
})} onClick={handlePersistentNotifications}
/> toggled={persistentNotifications}
icon={<PersistentNotificationsIcon size={18}/>}
text={formatMessage({
id: 'post_priority.persistent_notifications.text',
defaultMessage: 'Send persistent notifications',
})}
description={formatMessage(
{
id: 'post_priority.persistent_notifications.description',
defaultMessage: 'Recipients will be notified every {interval, plural, one {1 minute} other {{interval} minutes}} until they acknowledge or reply',
}, {
interval,
},
)}
/>
)}
</ul>
</li>
</MenuGroup> </MenuGroup>
{(postAcknowledgementsEnabled || persistentNotificationsEnabled) && ( )}
<MenuGroup> </Menu>
{postAcknowledgementsEnabled && (
<ToggleItem
disabled={false}
onClick={handleAck}
toggled={requestedAck}
icon={<AcknowledgementIcon size={18}/>}
text={formatMessage({
id: 'post_priority.requested_ack.text',
defaultMessage: 'Request acknowledgement',
})}
description={formatMessage({
id: 'post_priority.requested_ack.description',
defaultMessage: 'An acknowledgement button will appear with your message',
})}
/>
)}
{priority === PostPriority.URGENT && persistentNotificationsEnabled && (
<ToggleItem
disabled={priority !== PostPriority.URGENT}
onClick={handlePersistentNotifications}
toggled={persistentNotifications}
icon={<PersistentNotificationsIcon size={18}/>}
text={formatMessage({
id: 'post_priority.persistent_notifications.text',
defaultMessage: 'Send persistent notifications',
})}
description={formatMessage(
{
id: 'post_priority.persistent_notifications.description',
defaultMessage: 'Recipients will be notified every {interval, plural, one {1 minute} other {{interval} minutes}} until they acknowledge or reply',
}, {
interval,
},
)}
/>
)}
</MenuGroup>
)}
</Menu>
</div>
{postAcknowledgementsEnabled && ( {postAcknowledgementsEnabled && (
<Footer> <Footer>
<button <button

Просмотреть файл

@@ -32,7 +32,7 @@ const ItemButton = styled.button`
align-items: center !important; align-items: center !important;
`; `;
const Wrapper = styled.div` const Wrapper = styled.li`
cursor: ${(props) => (props.disabled ? 'default' : 'pointer')}; cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};
&:hover { &:hover {
@@ -117,7 +117,7 @@ function ToggleItem({
<Wrapper <Wrapper
onClick={disabled ? undefined : onClick} onClick={disabled ? undefined : onClick}
disabled={disabled} disabled={disabled}
role='button' role='menuitemcheckbox'
aria-pressed={toggled} aria-pressed={toggled}
> >
<ToggleMain> <ToggleMain>

Просмотреть файл

@@ -23,11 +23,11 @@ describe('components/Menu', () => {
<div <div
aria-label="test-label" aria-label="test-label"
className="a11y__popup Menu" className="a11y__popup Menu"
role="menu"
> >
<ul <ul
className="Menu__content dropdown-menu" className="Menu__content dropdown-menu"
onClick={[Function]} onClick={[Function]}
role="menu"
style={Object {}} style={Object {}}
> >
text text
@@ -51,11 +51,11 @@ describe('components/Menu', () => {
aria-label="test-label" aria-label="test-label"
className="a11y__popup Menu" className="a11y__popup Menu"
id="test-id" id="test-id"
role="menu"
> >
<ul <ul
className="Menu__content dropdown-menu" className="Menu__content dropdown-menu"
onClick={[Function]} onClick={[Function]}
role="menu"
style={Object {}} style={Object {}}
> >
text text
@@ -79,11 +79,11 @@ describe('components/Menu', () => {
<div <div
aria-label="test-label" aria-label="test-label"
className="a11y__popup Menu" className="a11y__popup Menu"
role="menu"
> >
<ul <ul
className="Menu__content dropdown-menu openLeft openUp" className="Menu__content dropdown-menu openLeft openUp"
onClick={[Function]} onClick={[Function]}
role="menu"
style={Object {}} style={Object {}}
> >
text text

Просмотреть файл

@@ -128,9 +128,9 @@ export default class Menu extends React.PureComponent<Props> {
aria-label={ariaLabel} aria-label={ariaLabel}
className='a11y__popup Menu' className='a11y__popup Menu'
id={id} id={id}
role='menu'
> >
<ul <ul
role='menu'
id={listId} id={listId}
ref={this.node} ref={this.node}
style={styles} style={styles}

Просмотреть файл

@@ -15,6 +15,7 @@ describe('components/MenuItem', () => {
<li <li
className="MenuGroup menu-divider" className="MenuGroup menu-divider"
onClick={[Function]} onClick={[Function]}
role="separator"
/> />
text text
</Fragment> </Fragment>

Просмотреть файл

@@ -23,6 +23,7 @@ const MenuGroup = (props: Props) => {
<li <li
className='MenuGroup menu-divider' className='MenuGroup menu-divider'
onClick={handleDividerClick} onClick={handleDividerClick}
role='separator'
/> />
); );

Просмотреть файл

@@ -4,11 +4,11 @@ exports[`plugins/MainMenuActions should match snapshot in mobile view with some
<div <div
aria-label="main menu" aria-label="main menu"
className="a11y__popup Menu" className="a11y__popup Menu"
role="menu"
> >
<ul <ul
className="Menu__content dropdown-menu" className="Menu__content dropdown-menu"
onClick={[Function]} onClick={[Function]}
role="menu"
style={Object {}} style={Object {}}
> >
<Memo(MenuGroup)> <Memo(MenuGroup)>
@@ -438,11 +438,11 @@ exports[`plugins/MainMenuActions should match snapshot in web view 1`] = `
<div <div
aria-label="team menu" aria-label="team menu"
className="a11y__popup Menu" className="a11y__popup Menu"
role="menu"
> >
<ul <ul
className="Menu__content dropdown-menu" className="Menu__content dropdown-menu"
onClick={[Function]} onClick={[Function]}
role="menu"
style={Object {}} style={Object {}}
> >
<Memo(MenuGroup)> <Memo(MenuGroup)>