carbon-components-angular
Version:
Next generation components
1 lines • 29.3 kB
Source Map (JSON)
{"version":3,"file":"carbon-components-angular-utils.mjs","sources":["../../src/utils/a11y.ts","../../src/utils/animation-frame.service.ts","../../src/utils/object.ts","../../src/utils/scroll.ts","../../src/utils/utils.ts","../../src/utils/element.service.ts","../../src/utils/event-observable.ts","../../src/utils/document.service.ts","../../src/utils/event.service.ts","../../src/utils/utils.module.ts","../../src/utils/window-tools.ts","../../src/utils/carbon-components-angular-utils.ts"],"sourcesContent":["function findSiblingElem(target, direction: \"nextElementSibling\" | \"previousElementSibling\") {\n\tif (target[direction]) {\n\t\tif (target[direction].classList.contains(\"disabled\")) {\n\t\t\treturn findSiblingElem(target[direction], direction);\n\t\t}\n\t\treturn target[direction];\n\t}\n}\n\nexport function findNextElem(target) {\n\treturn findSiblingElem(target, \"nextElementSibling\");\n}\n\nexport function findPrevElem(target) {\n\treturn findSiblingElem(target, \"previousElementSibling\");\n}\n\n// check for Hight contrast mode\nexport function HcModeChecker() {\n\tlet colorTest = \"rgb(255, 0, 0)\";\n\tlet htmlChecker = document.createElement(\"div\");\n\n\thtmlChecker.classList.add(\"hc-checker\");\n\tdocument.body.appendChild(htmlChecker);\n\n\tif (window.getComputedStyle(htmlChecker).backgroundColor.toString() !== colorTest) {\n\t\tdocument.body.classList.add(\"a11y\");\n\t}\n\tdocument.body.removeChild(htmlChecker);\n}\n\nexport function focusNextTree(elem, rootElem = null) {\n\tif (elem) {\n\t\tlet focusable = elem.querySelector(\"[tabindex='0']\");\n\n\t\tif (focusable) {\n\t\t\tfocusable.focus();\n\t\t} else {\n\t\t\tfocusNextElem(elem, rootElem);\n\t\t}\n\t}\n}\n\nexport function focusNextElem(elem, rootElem = null) {\n\tif (elem) {\n\t\tlet nextElem = elem.nextElementSibling;\n\n\t\tif (nextElem) {\n\t\t\tlet focusableElem = nextElem.querySelector(\"[tabindex='0']\");\n\n\t\t\tif (focusableElem) {\n\t\t\t\tfocusableElem.focus();\n\t\t\t} else {\n\t\t\t\tfocusNextElem(nextElem, rootElem);\n\t\t\t}\n\t\t} else {\n\t\t\tif (rootElem) {\n\t\t\t\tlet nextRootElem = rootElem.nextElementSibling;\n\n\t\t\t\tif (nextRootElem) {\n\t\t\t\t\tfocusNextTree(nextRootElem, rootElem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function focusPrevElem(elem, parentRef = null) {\n\tif (elem) {\n\t\tlet prevElem = elem.previousElementSibling;\n\n\t\tif (prevElem) {\n\t\t\tlet focusableElem = prevElem.querySelector(\"[tabindex='0']\");\n\t\t\tif (focusableElem) {\n\n\t\t\t\tif (focusableElem.getAttribute(\"aria-expanded\") === \"true\") {\n\t\t\t\t\tlet lastFocElms = prevElem.querySelectorAll(\"[tabindex='0']\");\n\t\t\t\t\tlet arrLen = lastFocElms.length - 1;\n\t\t\t\t\tfor (let i = arrLen; i >= 0; i--) {\n\t\t\t\t\t\tif (!!(lastFocElms[i].offsetWidth || lastFocElms[i].offsetHeight ||\n\t\t\t\t\t\t\tlastFocElms[i].getClientRects().length)) {\n\t\t\t\t\t\t\tfocusableElem = lastFocElms[i];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfocusableElem.focus();\n\t\t\t} else {\n\t\t\t\tfocusPrevElem(prevElem, parentRef);\n\t\t\t}\n\t\t} else {\n\t\t\tif (parentRef) {\n\t\t\t\tparentRef.querySelector(\"[tabindex='0']\").focus();\n\t\t\t}\n\t\t}\n\t}\n}\n","import {\n\tInjectable,\n\tOnDestroy,\n\tNgZone\n} from \"@angular/core\";\nimport { Observable, Subject, from } from \"rxjs\";\n\n@Injectable()\nexport class AnimationFrameServiceSingleton implements OnDestroy {\n\tpublic tick: Observable<number>;\n\n\tprotected frameSource = new Subject<number>();\n\n\tprotected animationFrameId: number;\n\n\tconstructor(protected ngZone: NgZone) {\n\t\tthis.tick = this.frameSource.asObservable();\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tthis.animationFrameId = requestAnimationFrame(this.doTick.bind(this));\n\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tcancelAnimationFrame(this.animationFrameId);\n\t}\n\n\tprotected doTick(frame: number) {\n\t\tthis.frameSource.next(frame);\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\trequestAnimationFrame(this.doTick.bind(this));\n\t\t});\n\t}\n}\n\n@Injectable()\nexport class AnimationFrameService {\n\tpublic tick: Observable<number>;\n\n\tconstructor(protected singleton: AnimationFrameServiceSingleton) {\n\t\tthis.tick = from(this.singleton.tick);\n\t}\n}\n","// custom deep object merge\nexport const merge = (target, ...objects) => {\n\tfor (const object of objects) {\n\t\tfor (const key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\t// since we're dealing just with JSON this simple check should be enough\n\t\t\t\tif (object[key] instanceof Object) {\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t}\n\t\t\t\t\t// recursively merge into the target\n\t\t\t\t\t// most translations only run 3 or 4 levels deep, so no stack explosions\n\t\t\t\t\ttarget[key] = merge(target[key], object[key]);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[key] = object[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n","import { map } from \"rxjs/operators\";\nimport { fromEvent, merge, Observable } from \"rxjs\";\n\n\n/**\n * Checks if a given element is scrollable.\n * If the element has an overflow set as part of its computed style it can scroll.\n * @param element the element to check scrollability\n */\nexport const isScrollableElement = (element: HTMLElement) => {\n\tconst computedStyle = getComputedStyle(element);\n\treturn (\n\t\tcomputedStyle.overflow === \"auto\" ||\n\t\tcomputedStyle.overflow === \"scroll\" ||\n\t\tcomputedStyle[\"overflow-y\"] === \"auto\" ||\n\t\tcomputedStyle[\"overflow-y\"] === \"scroll\" ||\n\t\tcomputedStyle[\"overflow-x\"] === \"auto\" ||\n\t\tcomputedStyle[\"overflow-x\"] === \"scroll\"\n\t);\n};\n\n/**\n * Checks if an element is visible within a container\n * @param element the element to check\n * @param container the container to check\n */\nexport const isVisibleInContainer = (element: HTMLElement, container: HTMLElement) => {\n\tconst elementRect = element.getBoundingClientRect();\n\tconst containerRect = container.getBoundingClientRect();\n\t// If there exists `height: 100%` on the `html` or `body` tag of an application,\n\t// it causes the calculation to return true if you need to scroll before the element is seen.\n\t// In that case we calculate its visibility based on the window viewport.\n\tif (container.tagName === \"BODY\" || container.tagName === \"HTML\") {\n\t\t// This checks if element is within the top, bottom, left and right of viewport, ie. if the element is visible in\n\t\t// the screen. This also takes into account partial visibility of an element.\n\t\tconst isAboveViewport = elementRect.top < 0 && (elementRect.top + element.clientHeight) < 0;\n\t\tconst isLeftOfViewport = elementRect.left < 0;\n\t\tconst isBelowViewport =\n\t\t\t(elementRect.bottom - element.clientHeight) > (window.innerHeight || document.documentElement.clientHeight);\n\t\tconst isRightOfViewport = elementRect.right > (window.innerWidth || document.documentElement.clientWidth);\n\n\t\tconst isVisibleInViewport = !(isAboveViewport || isBelowViewport || isLeftOfViewport || isRightOfViewport);\n\n\t\treturn isVisibleInViewport;\n\t}\n\treturn (\n\t\t// This also accounts for partial visibility. It will still return true if the element is partially visible inside the container.\n\t\t(elementRect.bottom - element.clientHeight) <= (containerRect.bottom + (container.offsetHeight - container.clientHeight) / 2) &&\n\t\telementRect.top >= (- element.clientHeight)\n\t);\n};\n\n\nexport const getScrollableParents = (node: HTMLElement) => {\n\tconst elements = [document.body];\n\twhile (node.parentElement && node !== document.body) {\n\t\tif (isScrollableElement(node)) {\n\t\t\telements.push(node);\n\t\t}\n\t\tnode = node.parentElement;\n\t}\n\treturn elements;\n};\n\nexport const hasScrollableParents = (node: HTMLElement) => {\n\twhile (node.parentElement && node !== document.body) {\n\t\tif (isScrollableElement(node)) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentElement;\n\t}\n\treturn false;\n};\n\n/**\n * Returns an observable that emits whenever any scrollable parent element scrolls\n *\n * @param node root element to start finding scrolling parents from\n */\nexport const scrollableParentsObservable = (node: HTMLElement): Observable<Event> => {\n\tconst windowScroll = fromEvent(window, \"scroll\", { passive: true }).pipe(map(event => (\n\t\t// update the event target to be something useful. In this case `body` is a sensible replacement\n\t\tObject.assign({}, event, { target: document.body }) as Event\n\t)));\n\tlet observables = [windowScroll];\n\t// walk the parents and subscribe to all the scroll events we can\n\twhile (node.parentElement && node !== document.body) {\n\t\tif (isScrollableElement(node)) {\n\t\t\tobservables.push(fromEvent(node, \"scroll\", { passive: true }));\n\t\t}\n\t\tnode = node.parentElement;\n\t}\n\n\treturn merge(...observables);\n};\n","export function clone(obj) {\n\treturn JSON.parse(JSON.stringify(obj));\n}\n\nfunction matchesAttr(el, attr, val) {\n\tconst styles = window.getComputedStyle(el);\n\treturn val.includes(styles[attr]);\n}\n\nexport function closestAttr(s, t, element) {\n\tlet el = element;\n\n\tif (!element) {\n\t\treturn null;\n\t}\n\n\tdo {\n\t\tif (matchesAttr(el, s, t)) {\n\t\t\treturn el;\n\t\t}\n\t\tel = el.parentElement || el.parentNode;\n\t} while (el !== null && el.nodeType === 1);\n\treturn null;\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, from } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { getScrollableParents, isVisibleInContainer } from \"./scroll\";\nimport { AnimationFrameServiceSingleton } from \"./animation-frame.service\";\nimport { ElementVisibilityEvent } from \"./element.types\";\n\n@Injectable()\nexport class ElementService {\n\tprotected tick: Observable<number>;\n\n\tconstructor(protected singleton: AnimationFrameServiceSingleton) {\n\t\tthis.tick = from(this.singleton.tick);\n\t}\n\n\tvisibility(target: HTMLElement, parentElement: HTMLElement = target): Observable<ElementVisibilityEvent> {\n\t\tconst scrollableParents = getScrollableParents(parentElement);\n\t\treturn this.tick.pipe(map(() => {\n\t\t\tfor (const parent of scrollableParents) {\n\t\t\t\tif (!isVisibleInContainer(target, parent)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvisible: false\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tvisible: true\n\t\t\t};\n\t\t}));\n\t}\n}\n","import { Observable, fromEvent } from \"rxjs\";\n\nexport const getEventObservable = (targetElement: HTMLElement | Element, eventType: string): Observable<Event> => {\n\tswitch (eventType) {\n\t\tcase \"scroll\":\n\t\tcase \"resize\":\n\t\tcase \"touchstart\":\n\t\tcase \"touchmove\":\n\t\tcase \"touchend\":\n\t\t\treturn fromEvent(targetElement, eventType, { passive: true });\n\t\tdefault:\n\t\t\treturn fromEvent(targetElement, eventType);\n\t}\n};\n","import { Injectable, OnDestroy } from \"@angular/core\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { EventHandler } from \"./types\";\nimport { getEventObservable } from \"./event-observable\";\n\n@Injectable()\nexport class DocumentService implements OnDestroy {\n\tprotected globalEvents = new Map<string, Observable<Event>>();\n\n\tprotected documentRef = document;\n\n\tprotected subscriptions = new Subscription();\n\n\thandleEvent(eventType: string, callback: EventHandler) {\n\t\tif (!this.globalEvents.has(eventType)) {\n\t\t\tif (this.documentRef) {\n\t\t\t\tthis.globalEvents.set(eventType, getEventObservable(this.documentRef as any, eventType));\n\t\t\t} else {\n\t\t\t\tthis.globalEvents.set(eventType, new Observable());\n\t\t\t}\n\t\t}\n\t\tconst observable = this.globalEvents.get(eventType);\n\t\tthis.subscriptions.add(observable.subscribe(callback));\n\t}\n\n\thandleClick(callback: EventHandler) {\n\t\tthis.handleEvent(\"click\", callback);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.subscriptions.unsubscribe();\n\t\tthis.globalEvents = null;\n\t}\n}\n","import { Injectable, OnDestroy } from \"@angular/core\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { DocumentService } from \"./document.service\";\nimport { EventHandler } from \"./types\";\nimport { getEventObservable } from \"./event-observable\";\n\n@Injectable()\nexport class EventService implements OnDestroy {\n\tprotected subscriptions = new Subscription();\n\n\tprotected targets = new WeakMap<HTMLElement | Element | Document, Map<string, Observable<Event>>>();\n\n\tconstructor(protected documentService: DocumentService) {}\n\n\ton(targetElement: HTMLElement | Element, eventType: string, callback: EventHandler) {\n\t\tif (!this.targets.has(targetElement)) {\n\t\t\tthis.targets.set(targetElement, new Map());\n\t\t}\n\n\t\tconst eventMap = this.targets.get(targetElement);\n\n\t\tif (!eventMap.has(eventType)) {\n\t\t\teventMap.set(eventType, getEventObservable(targetElement, eventType));\n\t\t}\n\n\t\tconst subscription = eventMap.get(eventType).subscribe(callback);\n\t\tthis.subscriptions.add(subscription);\n\t}\n\n\tonDocument(eventType: string, callback: EventHandler) {\n\t\tthis.documentService.handleEvent(eventType, callback);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.subscriptions.unsubscribe();\n\t}\n}\n","import { NgModule, Optional, SkipSelf, NgZone } from \"@angular/core\";\nimport {\n\tAnimationFrameService,\n\tAnimationFrameServiceSingleton\n} from \"./animation-frame.service\";\nimport { ElementService } from \"./element.service\";\nimport { EventService } from \"./event.service\";\nimport { DocumentService } from \"./document.service\";\n\n// either provides a new instance of DocumentService, or returns the parent\nexport function DOCUMENT_SERVICE_PROVIDER_FACTORY(parentService: DocumentService) {\n\treturn parentService || new DocumentService();\n}\n\n// DocumentService *must* be a singleton to ensure that we handle events and other document level settings once (and only once)\nexport const DOCUMENT_SERVICE_PROVIDER = {\n\tprovide: DocumentService,\n\tdeps: [[new Optional(), new SkipSelf(), DocumentService]],\n\tuseFactory: DOCUMENT_SERVICE_PROVIDER_FACTORY\n};\n\n// either provides a new instance of AnimationFrameServiceSingleton, or returns the parent\nexport function ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER_FACTORY(parentService: AnimationFrameServiceSingleton, ngZone: NgZone) {\n\treturn parentService || new AnimationFrameServiceSingleton(ngZone);\n}\n\n// AnimationFrameServiceSingleton is a singleton so we don't have a ton of duplicate RAFs firing (better for scheduling)\nexport const ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER = {\n\tprovide: AnimationFrameServiceSingleton,\n\tdeps: [[new Optional(), new SkipSelf(), AnimationFrameServiceSingleton], NgZone],\n\tuseFactory: ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER_FACTORY\n};\n\n@NgModule({\n\tproviders: [\n\t\tDOCUMENT_SERVICE_PROVIDER,\n\t\tANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER,\n\t\tAnimationFrameServiceSingleton,\n\t\tDocumentService,\n\t\tAnimationFrameService,\n\t\tElementService,\n\t\tEventService\n\t]\n})\nexport class UtilsModule { }\n","let _scrollbarWidth = -1;\n\nexport function getScrollbarWidth() {\n\t// lets not recreate this whole thing every time\n\tif (_scrollbarWidth >= 0) {\n\t\treturn _scrollbarWidth;\n\t}\n\n\t// do the calculations the first time\n\tconst outer = document.createElement(\"div\");\n\touter.style.visibility = \"hidden\";\n\touter.style.width = \"100px\";\n\touter.style[\"msOverflowStyle\"] = \"scrollbar\"; // needed for WinJS apps\n\n\tdocument.body.appendChild(outer);\n\n\tconst widthNoScroll = outer.offsetWidth;\n\t// force scrollbars\n\touter.style.overflow = \"scroll\";\n\n\t// add innerdiv\n\tconst inner = document.createElement(\"div\");\n\tinner.style.width = \"100%\";\n\touter.appendChild(inner);\n\n\tconst widthWithScroll = inner.offsetWidth;\n\n\t// remove divs\n\touter.parentNode.removeChild(outer);\n\n\t_scrollbarWidth = widthNoScroll - widthWithScroll;\n\treturn _scrollbarWidth;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["merge","i1.AnimationFrameServiceSingleton","i1.DocumentService"],"mappings":"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"}