@razorpay/blade
Version:
The Design System that powers Razorpay
63 lines (59 loc) • 1.95 kB
JavaScript
import { dropdownComponentIds } from '../Dropdown/dropdownComponentIds.js';
import '../../utils/index.js';
import { isReactNative } from '../../utils/platform/isReactNative.js';
/**
* is the role supposed to be `menu`
*/
var isRoleMenu = function isRoleMenu(dropdownTriggerer) {
return isReactNative() || dropdownTriggerer !== dropdownComponentIds.triggers.SelectInput && dropdownTriggerer !== dropdownComponentIds.triggers.AutoComplete;
};
/**
* We switch between accessibility of `dialog` with `listbox` and buttons as a child and just `listbox` when there are action items on footer
*
* Not announcing `dialog` helps not throw users off for simple dropdowns.
*
* and having `dialog` is neccessary when there are buttons on footer
*
* `menu` role is required for react native.
*/
var getActionListContainerRole = function getActionListContainerRole(hasFooterAction, dropdownTriggerer) {
if (isReactNative()) {
return 'menu';
}
if (hasFooterAction) {
return 'dialog';
}
if (isRoleMenu(dropdownTriggerer)) {
return 'menu';
}
return 'listbox';
};
var getActionListSectionRole = function getActionListSectionRole() {
if (isReactNative()) {
return undefined;
}
return 'group';
};
var getActionListItemWrapperRole = function getActionListItemWrapperRole(hasFooterAction, dropdownTriggerer) {
if (isRoleMenu(dropdownTriggerer)) {
return undefined;
}
if (hasFooterAction) {
return 'listbox';
}
return undefined;
};
var getActionListItemRole = function getActionListItemRole(dropdownTriggerer, href, selectionType) {
if (href) {
return 'link';
}
if (isRoleMenu(dropdownTriggerer)) {
if (selectionType === 'multiple') {
return 'menuitemcheckbox';
}
return 'menuitem';
}
return 'option';
};
export { getActionListContainerRole, getActionListItemRole, getActionListItemWrapperRole, getActionListSectionRole, isRoleMenu };
//# sourceMappingURL=getA11yRoles.js.map