carbon-components-angular
Version:
Next generation components
1 lines • 5.72 kB
Source Map (JSON)
{"version":3,"file":"carbon-components-angular-common.mjs","sources":["../../src/common/tab.service.ts","../../src/common/utils.ts","../../src/common/carbon-components-angular-common.ts"],"sourcesContent":["export let tabbableSelector = \"a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"textarea:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]\";\n\nexport let tabbableSelectorIgnoreTabIndex = \"a[href], area[href], input:not([disabled]), \" +\n\t\t\"button:not([disabled]),select:not([disabled]), \" +\n\t\t\"textarea:not([disabled]), \" +\n\t\t\"iframe, object, embed, *[tabindex], *[contenteditable=true]\";\n\nexport function getFocusElementList(element, selector = tabbableSelector) {\n\tlet elements = element.querySelectorAll(selector);\n\treturn elements ? Array.prototype.filter.call(elements, el => isVisible(el)) : elements;\n}\n\nexport function isFocusInFirstItem(event, list) {\n\tif (list.length > 0) {\n\t\treturn (event.target || event.srcElement) === list[0];\n\t}\n\treturn false;\n}\n\nexport function isFocusInLastItem(event, list) {\n\tif (list.length > 0) {\n\t\treturn (event.target || event.srcElement) === list[list.length - 1];\n\t}\n\treturn false;\n}\n\nexport function isElementFocused(event, element) {\n\treturn (event.target || event.srcElement) === element;\n}\n\nexport function focusFirstFocusableElement(list) {\n\tif (list.length > 0) {\n\t\tlist[0].focus();\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function focusLastFocusableElement(list) {\n\tif (list.length > 0) {\n\t\tlist[list.length - 1].focus();\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isVisible(element) {\n\treturn !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n}\n\nexport function cycleTabs(event, element) {\n\tif (event.key === \"Tab\") {\n\t\tlet list = getFocusElementList(element);\n\t\tlet focusChanged = false;\n\n\t\tif (event.shiftKey) {\n\t\t\tif (isFocusInFirstItem(event, list) || isElementFocused(event, element)) {\n\t\t\t\tfocusChanged = focusLastFocusableElement(list);\n\t\t\t}\n\t\t} else {\n\t\t\tif (isFocusInLastItem(event, list)) {\n\t\t\t\tfocusChanged = focusFirstFocusableElement(list);\n\t\t\t}\n\t\t}\n\n\t\tif (focusChanged) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","/**\n * Does what python's `range` function does, with a slightly different\n * signature because of Typescript limitations.\n *\n * Useful for numbered loops in angular templates, since we can do\n * a normal for loop.\n *\n * @export\n * @param stop Generate numbers up to, but not including this number\n * @param [start=0] Starting number of the sequence\n * @param [step=1] Difference between each number in the sequence\n * @returns an array with resulting numbers\n */\nexport function range(stop: number, start = 0, step = 1) {\n\treturn Array(Math.ceil((stop - start) / step)).fill(0).map((x, i) => i * step + start);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}