UNPKG

carbon-components-angular

Version:
89 lines 10.1 kB
function findSiblingElem(target, direction) { if (target[direction]) { if (target[direction].classList.contains("disabled")) { return findSiblingElem(target[direction], direction); } return target[direction]; } } export function findNextElem(target) { return findSiblingElem(target, "nextElementSibling"); } export function findPrevElem(target) { return findSiblingElem(target, "previousElementSibling"); } // check for Hight contrast mode export function HcModeChecker() { let colorTest = "rgb(255, 0, 0)"; let htmlChecker = document.createElement("div"); htmlChecker.classList.add("hc-checker"); document.body.appendChild(htmlChecker); if (window.getComputedStyle(htmlChecker).backgroundColor.toString() !== colorTest) { document.body.classList.add("a11y"); } document.body.removeChild(htmlChecker); } export function focusNextTree(elem, rootElem = null) { if (elem) { let focusable = elem.querySelector("[tabindex='0']"); if (focusable) { focusable.focus(); } else { focusNextElem(elem, rootElem); } } } export function focusNextElem(elem, rootElem = null) { if (elem) { let nextElem = elem.nextElementSibling; if (nextElem) { let focusableElem = nextElem.querySelector("[tabindex='0']"); if (focusableElem) { focusableElem.focus(); } else { focusNextElem(nextElem, rootElem); } } else { if (rootElem) { let nextRootElem = rootElem.nextElementSibling; if (nextRootElem) { focusNextTree(nextRootElem, rootElem); } } } } } export function focusPrevElem(elem, parentRef = null) { if (elem) { let prevElem = elem.previousElementSibling; if (prevElem) { let focusableElem = prevElem.querySelector("[tabindex='0']"); if (focusableElem) { if (focusableElem.getAttribute("aria-expanded") === "true") { let lastFocElms = prevElem.querySelectorAll("[tabindex='0']"); let arrLen = lastFocElms.length - 1; for (let i = arrLen; i >= 0; i--) { if (!!(lastFocElms[i].offsetWidth || lastFocElms[i].offsetHeight || lastFocElms[i].getClientRects().length)) { focusableElem = lastFocElms[i]; break; } } } focusableElem.focus(); } else { focusPrevElem(prevElem, parentRef); } } else { if (parentRef) { parentRef.querySelector("[tabindex='0']").focus(); } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9hMTF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxTQUEwRDtJQUMxRixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN0QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNyRDtRQUNELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3pCO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBTTtJQUNsQyxPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFNO0lBQ2xDLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLGFBQWE7SUFDNUIsSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFDakMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVoRCxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV2QyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFO1FBQ2xGLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwQztJQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUNsRCxJQUFJLElBQUksRUFBRTtRQUNULElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVyRCxJQUFJLFNBQVMsRUFBRTtZQUNkLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsQjthQUFNO1lBQ04sYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM5QjtLQUNEO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQ2xELElBQUksSUFBSSxFQUFFO1FBQ1QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRXZDLElBQUksUUFBUSxFQUFFO1lBQ2IsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTdELElBQUksYUFBYSxFQUFFO2dCQUNsQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDdEI7aUJBQU07Z0JBQ04sYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNsQztTQUNEO2FBQU07WUFDTixJQUFJLFFBQVEsRUFBRTtnQkFDYixJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBRS9DLElBQUksWUFBWSxFQUFFO29CQUNqQixhQUFhLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUN0QzthQUNEO1NBQ0Q7S0FDRDtBQUNGLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEdBQUcsSUFBSTtJQUNuRCxJQUFJLElBQUksRUFBRTtRQUNULElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUUzQyxJQUFJLFFBQVEsRUFBRTtZQUNiLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3RCxJQUFJLGFBQWEsRUFBRTtnQkFFbEIsSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLE1BQU0sRUFBRTtvQkFDM0QsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQzlELElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVk7NEJBQy9ELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDekMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDL0IsTUFBTTt5QkFDTjtxQkFDRDtpQkFDRDtnQkFDRCxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDdEI7aUJBQU07Z0JBQ04sYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNuQztTQUNEO2FBQU07WUFDTixJQUFJLFNBQVMsRUFBRTtnQkFDZCxTQUFTLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEQ7U0FDRDtLQUNEO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGZpbmRTaWJsaW5nRWxlbSh0YXJnZXQsIGRpcmVjdGlvbjogXCJuZXh0RWxlbWVudFNpYmxpbmdcIiB8IFwicHJldmlvdXNFbGVtZW50U2libGluZ1wiKSB7XG5cdGlmICh0YXJnZXRbZGlyZWN0aW9uXSkge1xuXHRcdGlmICh0YXJnZXRbZGlyZWN0aW9uXS5jbGFzc0xpc3QuY29udGFpbnMoXCJkaXNhYmxlZFwiKSkge1xuXHRcdFx0cmV0dXJuIGZpbmRTaWJsaW5nRWxlbSh0YXJnZXRbZGlyZWN0aW9uXSwgZGlyZWN0aW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhcmdldFtkaXJlY3Rpb25dO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmV4dEVsZW0odGFyZ2V0KSB7XG5cdHJldHVybiBmaW5kU2libGluZ0VsZW0odGFyZ2V0LCBcIm5leHRFbGVtZW50U2libGluZ1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQcmV2RWxlbSh0YXJnZXQpIHtcblx0cmV0dXJuIGZpbmRTaWJsaW5nRWxlbSh0YXJnZXQsIFwicHJldmlvdXNFbGVtZW50U2libGluZ1wiKTtcbn1cblxuLy8gY2hlY2sgZm9yIEhpZ2h0IGNvbnRyYXN0IG1vZGVcbmV4cG9ydCBmdW5jdGlvbiBIY01vZGVDaGVja2VyKCkge1xuXHRsZXQgY29sb3JUZXN0ID0gXCJyZ2IoMjU1LCAwLCAwKVwiO1xuXHRsZXQgaHRtbENoZWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXG5cdGh0bWxDaGVja2VyLmNsYXNzTGlzdC5hZGQoXCJoYy1jaGVja2VyXCIpO1xuXHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGh0bWxDaGVja2VyKTtcblxuXHRpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoaHRtbENoZWNrZXIpLmJhY2tncm91bmRDb2xvci50b1N0cmluZygpICE9PSBjb2xvclRlc3QpIHtcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJhMTF5XCIpO1xuXHR9XG5cdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaHRtbENoZWNrZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNOZXh0VHJlZShlbGVtLCByb290RWxlbSA9IG51bGwpIHtcblx0aWYgKGVsZW0pIHtcblx0XHRsZXQgZm9jdXNhYmxlID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiW3RhYmluZGV4PScwJ11cIik7XG5cblx0XHRpZiAoZm9jdXNhYmxlKSB7XG5cdFx0XHRmb2N1c2FibGUuZm9jdXMoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9jdXNOZXh0RWxlbShlbGVtLCByb290RWxlbSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c05leHRFbGVtKGVsZW0sIHJvb3RFbGVtID0gbnVsbCkge1xuXHRpZiAoZWxlbSkge1xuXHRcdGxldCBuZXh0RWxlbSA9IGVsZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG5cdFx0aWYgKG5leHRFbGVtKSB7XG5cdFx0XHRsZXQgZm9jdXNhYmxlRWxlbSA9IG5leHRFbGVtLnF1ZXJ5U2VsZWN0b3IoXCJbdGFiaW5kZXg9JzAnXVwiKTtcblxuXHRcdFx0aWYgKGZvY3VzYWJsZUVsZW0pIHtcblx0XHRcdFx0Zm9jdXNhYmxlRWxlbS5mb2N1cygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9jdXNOZXh0RWxlbShuZXh0RWxlbSwgcm9vdEVsZW0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAocm9vdEVsZW0pIHtcblx0XHRcdFx0bGV0IG5leHRSb290RWxlbSA9IHJvb3RFbGVtLm5leHRFbGVtZW50U2libGluZztcblxuXHRcdFx0XHRpZiAobmV4dFJvb3RFbGVtKSB7XG5cdFx0XHRcdFx0Zm9jdXNOZXh0VHJlZShuZXh0Um9vdEVsZW0sIHJvb3RFbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNQcmV2RWxlbShlbGVtLCBwYXJlbnRSZWYgPSBudWxsKSB7XG5cdGlmIChlbGVtKSB7XG5cdFx0bGV0IHByZXZFbGVtID0gZWxlbS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG5cdFx0aWYgKHByZXZFbGVtKSB7XG5cdFx0XHRsZXQgZm9jdXNhYmxlRWxlbSA9IHByZXZFbGVtLnF1ZXJ5U2VsZWN0b3IoXCJbdGFiaW5kZXg9JzAnXVwiKTtcblx0XHRcdGlmIChmb2N1c2FibGVFbGVtKSB7XG5cblx0XHRcdFx0aWYgKGZvY3VzYWJsZUVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdFx0XHRsZXQgbGFzdEZvY0VsbXMgPSBwcmV2RWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiW3RhYmluZGV4PScwJ11cIik7XG5cdFx0XHRcdFx0bGV0IGFyckxlbiA9IGxhc3RGb2NFbG1zLmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IGFyckxlbjsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRcdGlmICghIShsYXN0Rm9jRWxtc1tpXS5vZmZzZXRXaWR0aCB8fCBsYXN0Rm9jRWxtc1tpXS5vZmZzZXRIZWlnaHQgfHxcblx0XHRcdFx0XHRcdFx0bGFzdEZvY0VsbXNbaV0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdGZvY3VzYWJsZUVsZW0gPSBsYXN0Rm9jRWxtc1tpXTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvY3VzYWJsZUVsZW0uZm9jdXMoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvY3VzUHJldkVsZW0ocHJldkVsZW0sIHBhcmVudFJlZik7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChwYXJlbnRSZWYpIHtcblx0XHRcdFx0cGFyZW50UmVmLnF1ZXJ5U2VsZWN0b3IoXCJbdGFiaW5kZXg9JzAnXVwiKS5mb2N1cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl19