UNPKG

braid-design-system

Version:
48 lines (47 loc) 1.43 kB
"use strict"; const getItemId = (id, index) => `${id}-item-${index}`; const createAccessibilityProps = ({ id, highlightedIndex, isOpen }) => { const menuId = `${id}-menu`; const assistiveDescriptionId = `${id}-aria-description`; return { inputProps: { id, role: "combobox", "aria-haspopup": "listbox", "aria-owns": isOpen ? menuId : void 0, // backwards compatibility for screenreaders implementing ARIA 1.0 "aria-controls": menuId, "aria-expanded": isOpen, "aria-autocomplete": "list", "aria-activedescendant": typeof highlightedIndex === "number" ? getItemId(id, highlightedIndex) : void 0, "aria-describedby": assistiveDescriptionId, autoComplete: "off", // https://stackoverflow.com/questions/47775041/disable-autofill-in-chrome-63/47822599 spellCheck: false }, assistiveDescriptionProps: { id: assistiveDescriptionId }, menuProps: { id: menuId, role: "listbox" }, getItemProps: ({ index, label, description, groupHeading }) => ({ id: getItemId(id, index), role: "option", "aria-selected": index === highlightedIndex, "aria-label": `${label}${description ? ` - ${description}` : ""}${groupHeading ? ` (${groupHeading})` : ""}` }) }; }; exports.createAccessibilityProps = createAccessibilityProps; exports.getItemId = getItemId;