UNPKG

12.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"ng-positioning.js","sourceRoot":"","sources":["../../src/positioning/ng-positioning.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\n// tslint:disable\nexport class Positioning {\n public position(element: HTMLElement, round = true): ClientRect {\n let elPosition: ClientRect;\n let parentOffset: ClientRect = {width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0};\n\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n } else {\n const offsetParentEl = this.offsetParent(element);\n\n elPosition = this.offset(element, false);\n\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n\n return elPosition;\n }\n\n public offset(element: HTMLElement, round = true): ClientRect {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n\n let elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n\n return elOffset;\n }\n\n public positionElements(hostElement: HTMLElement, targetElement: HTMLElement, placement: string, appendToBody?: boolean):\n ClientRect {\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n const shiftWidth: any = {\n left: hostElPosition.left,\n center: hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2,\n right: hostElPosition.left + hostElPosition.width\n };\n const shiftHeight: any = {\n top: hostElPosition.top,\n center: hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2,\n bottom: hostElPosition.top + hostElPosition.height\n };\n const targetElBCR = targetElement.getBoundingClientRect();\n const placementPrimary = placement.split(' ')[0] || 'top';\n const placementSecondary = placement.split(' ')[1] || 'center';\n\n let targetElPosition: ClientRect = {\n height: targetElBCR.height || targetElement.offsetHeight,\n width: targetElBCR.width || targetElement.offsetWidth,\n top: 0,\n bottom: targetElBCR.height || targetElement.offsetHeight,\n left: 0,\n right: targetElBCR.width || targetElement.offsetWidth\n };\n\n switch (placementPrimary) {\n case 'top':\n targetElPosition.top = hostElPosition.top - targetElement.offsetHeight;\n targetElPosition.bottom += hostElPosition.top - targetElement.offsetHeight;\n targetElPosition.left = shiftWidth[placementSecondary];\n targetElPosition.right += shiftWidth[placementSecondary];\n break;\n case 'bottom':\n targetElPosition.top = shiftHeight[placementPrimary];\n targetElPosition.bottom += shiftHeight[placementPrimary];\n targetElPosition.left = shiftWidth[placementSecondary];\n targetElPosition.right += shiftWidth[placementSecondary];\n break;\n case 'left':\n targetElPosition.top = shiftHeight[placementSecondary];\n targetElPosition.bottom += shiftHeight[placementSecondary];\n targetElPosition.left = hostElPosition.left - targetElement.offsetWidth;\n targetElPosition.right += hostElPosition.left - targetElement.offsetWidth;\n break;\n case 'right':\n targetElPosition.top = shiftHeight[placementSecondary];\n targetElPosition.bottom += shiftHeight[placementSecondary];\n targetElPosition.left = shiftWidth[placementPrimary];\n targetElPosition.right += shiftWidth[placementPrimary];\n break;\n }\n\n targetElPosition.top = Math.round(targetElPosition.top);\n targetElPosition.bottom = Math.round(targetElPosition.bottom);\n targetElPosition.left = Math.round(targetElPosition.left);\n targetElPosition.right = Math.round(targetElPosition.right);\n\n return targetElPosition;\n }\n\n private getStyle(element: HTMLElement, prop: string): string { return (window.getComputedStyle(element) as any)[prop]; }\n\n private isStaticPositioned(element: HTMLElement): boolean {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n\n private offsetParent(element: HTMLElement): HTMLElement {\n let offsetParentEl = <HTMLElement>element.offsetParent || document.documentElement;\n\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\n }\n\n return offsetParentEl || document.documentElement;\n }\n}\n\nconst positionService = new Positioning();\n\nexport function positionElements(\n hostElement: HTMLElement, targetElement: HTMLElement, placement: string, appendToBody?: boolean): void {\n const pos = positionService.positionElements(hostElement, targetElement, placement, appendToBody);\n\n targetElement.style.top = `${pos.top}px`;\n targetElement.style.left = `${pos.left}px`;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
\No newline at end of file