UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

63 lines (59 loc) 1.95 kB
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