UNPKG

@ng-doc/ui-kit

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

1 lines 20.5 kB
{"version":3,"file":"ng-doc-ui-kit-utils.mjs","sources":["../../../../libs/ui-kit/utils/focus-utils.ts","../../../../libs/ui-kit/utils/overlay-utils.ts","../../../../libs/ui-kit/utils/position-utils.ts","../../../../libs/ui-kit/utils/ng-doc-ui-kit-utils.ts"],"sourcesContent":["export class NgDocFocusUtils {\n\tstatic isNativeKeyboardFocusable(element: Element): boolean {\n\t\tif (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\t(element instanceof HTMLElement && element.isContentEditable) ||\n\t\t\telement.getAttribute('tabIndex') === '0'\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tswitch (element.tagName) {\n\t\t\tcase 'BUTTON':\n\t\t\tcase 'SELECT':\n\t\t\tcase 'TEXTAREA':\n\t\t\t\treturn true;\n\t\t\tcase 'VIDEO':\n\t\t\tcase 'AUDIO':\n\t\t\t\treturn element.hasAttribute('controls');\n\t\t\tcase 'INPUT':\n\t\t\t\treturn element.getAttribute('type') !== 'hidden';\n\t\t\tcase 'A':\n\t\t\tcase 'LINK':\n\t\t\t\treturn element.hasAttribute('href');\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tstatic getClosestKeyboardFocusable(\n\t\tinitial: HTMLElement,\n\t\troot: Node,\n\t\tforward: boolean = true,\n\t): HTMLElement | null {\n\t\tif (!root.ownerDocument) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst svgNodeFilter: NodeFilter = ((node: Node) =>\n\t\t\t'ownerSVGElement' in node ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT) as never;\n\n\t\tconst treeWalker: TreeWalker = root.ownerDocument.createTreeWalker(\n\t\t\troot,\n\t\t\tNodeFilter.SHOW_ELEMENT,\n\t\t\tsvgNodeFilter,\n\t\t);\n\n\t\ttreeWalker.currentNode = initial;\n\n\t\twhile (forward ? treeWalker.nextNode() : treeWalker.previousNode()) {\n\t\t\tif (treeWalker.currentNode instanceof HTMLElement) {\n\t\t\t\tinitial = treeWalker.currentNode;\n\t\t\t}\n\n\t\t\tif (NgDocFocusUtils.isNativeKeyboardFocusable(initial)) {\n\t\t\t\treturn initial;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic focusClosestElement(initial: HTMLElement, root: Node, forward: boolean = true): void {\n\t\tconst focusable: HTMLElement | null = NgDocFocusUtils.getClosestKeyboardFocusable(\n\t\t\tinitial,\n\t\t\troot,\n\t\t\tforward,\n\t\t);\n\t\tif (focusable) {\n\t\t\tfocusable.focus();\n\t\t}\n\t}\n}\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport {\n\tNgDocHorizontalAlign,\n\tNgDocOverlayPosition,\n\tNgDocOverlayRelativePosition,\n\tNgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\n\nexport const NG_DOC_ARROW_MARGIN: number = 32;\n\nconst POSITION_DESCRIPTION: Record<string, ConnectedPosition> = {\n\t'top-left': {\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'bottom',\n\t},\n\t'top-center': {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t'top-right': {\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'bottom',\n\t},\n\t'bottom-left': {\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t'bottom-center': {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t'bottom-right': {\n\t\toriginX: 'end',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n\t'left-top': {\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n\t'left-center': {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t'left-bottom': {\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'end',\n\t\toverlayY: 'bottom',\n\t},\n\t'right-top': {\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t'right-center': {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t'right-bottom': {\n\t\toriginX: 'end',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'bottom',\n\t},\n};\n\nexport class NgDocOverlayUtils {\n\tstatic getConnectedPosition(\n\t\tdropdownPositions: NgDocOverlayPosition | NgDocOverlayPosition[],\n\t\torigin: HTMLElement,\n\t\toffset: number = 0,\n\t\twithPointer: boolean = false,\n\t): ConnectedPosition[] {\n\t\treturn asArray(dropdownPositions).map((position: NgDocOverlayPosition) => {\n\t\t\tconst connectedPosition: ConnectedPosition = NgDocOverlayUtils.toConnectedPosition(position);\n\t\t\tconst marginMultiplier: number = NgDocOverlayUtils.getMarginMultiplier(connectedPosition);\n\t\t\tconst marginX: number = !NgDocOverlayUtils.isVerticalPosition(connectedPosition)\n\t\t\t\t? offset * marginMultiplier\n\t\t\t\t: 0;\n\t\t\tconst marginY: number = NgDocOverlayUtils.isVerticalPosition(connectedPosition)\n\t\t\t\t? offset * marginMultiplier\n\t\t\t\t: 0;\n\t\t\tconnectedPosition.offsetX = connectedPosition.offsetX || 0;\n\t\t\tconnectedPosition.offsetY = connectedPosition.offsetY || 0;\n\t\t\tconnectedPosition.offsetX +=\n\t\t\t\t(withPointer ? NgDocOverlayUtils.getOffsetX(origin, connectedPosition) : 0) + marginX;\n\t\t\tconnectedPosition.offsetY +=\n\t\t\t\t(withPointer ? NgDocOverlayUtils.getOffsetY(origin, connectedPosition) : 0) + marginY;\n\t\t\treturn connectedPosition;\n\t\t});\n\t}\n\n\tstatic toConnectedPosition(position: NgDocOverlayPosition): ConnectedPosition {\n\t\treturn typeof position === 'string' ? { ...POSITION_DESCRIPTION[position] } : { ...position };\n\t}\n\n\tstatic toConnectedPositions(positions: NgDocOverlayPosition[]): ConnectedPosition[] {\n\t\treturn positions.map(NgDocOverlayUtils.toConnectedPosition);\n\t}\n\n\tstatic getOffsetX(origin: HTMLElement, position: ConnectedPosition): number {\n\t\tconst isVertical: boolean = NgDocOverlayUtils.isVerticalPosition(position);\n\t\tconst offsetMultiplier: number = NgDocOverlayUtils.getOffsetMultiplier(position);\n\t\tconst isCenter: boolean = NgDocOverlayUtils.isCenterPosition(position);\n\t\tconst width: number =\n\t\t\t(position.originX === 'center' && position.overlayX !== 'center') ||\n\t\t\tNgDocOverlayUtils.overlayIsOutByX(position)\n\t\t\t\t? NG_DOC_ARROW_MARGIN - 24\n\t\t\t\t: origin.offsetWidth;\n\t\treturn (\n\t\t\t(isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - width, 0) : 0) * offsetMultiplier\n\t\t);\n\t}\n\n\tstatic getOffsetY(origin: HTMLElement, position: ConnectedPosition): number {\n\t\tconst isVertical: boolean = NgDocOverlayUtils.isVerticalPosition(position);\n\t\tconst offsetMultiplier: number = NgDocOverlayUtils.getOffsetMultiplier(position);\n\t\tconst isCenter: boolean = NgDocOverlayUtils.isCenterPosition(position);\n\t\tconst height: number =\n\t\t\t(position.originY === 'center' && position.overlayY !== 'center') ||\n\t\t\tNgDocOverlayUtils.overlayIsOutByY(position)\n\t\t\t\t? NG_DOC_ARROW_MARGIN - 24\n\t\t\t\t: origin.offsetHeight;\n\t\treturn (\n\t\t\t(!isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - height, 0) : 0) * offsetMultiplier\n\t\t);\n\t}\n\n\tstatic overlayIsOutByX(position: ConnectedPosition): boolean {\n\t\treturn (\n\t\t\t(position.originX === 'start' && position.overlayX === 'end') ||\n\t\t\t(position.originX === 'end' && position.overlayX === 'start')\n\t\t);\n\t}\n\n\tstatic overlayIsOutByY(position: ConnectedPosition): boolean {\n\t\treturn (\n\t\t\t(position.originY === 'top' && position.overlayY === 'bottom') ||\n\t\t\t(position.originY === 'bottom' && position.overlayY === 'top')\n\t\t);\n\t}\n\n\tstatic getOffsetMultiplier(position: ConnectedPosition): number {\n\t\treturn (NgDocOverlayUtils.isVerticalPosition(position) && position.overlayX === 'end') ||\n\t\t\t(!NgDocOverlayUtils.isVerticalPosition(position) && position.overlayY === 'bottom')\n\t\t\t? 1\n\t\t\t: -1;\n\t}\n\n\tstatic getMarginMultiplier(position: ConnectedPosition): number {\n\t\treturn ['right', 'bottom'].includes(NgDocOverlayUtils.getRelativePosition(position) || '')\n\t\t\t? 1\n\t\t\t: -1;\n\t}\n\n\tstatic isVerticalPosition(position: ConnectedPosition): boolean {\n\t\treturn ['bottom', 'top'].includes(NgDocOverlayUtils.getRelativePosition(position) || '');\n\t}\n\n\tstatic isCenterPosition(position: ConnectedPosition): boolean {\n\t\treturn position.overlayX === 'center' || position.overlayY === 'center';\n\t}\n\n\tstatic getPositionAlign(\n\t\tposition: ConnectedPosition,\n\t): NgDocHorizontalAlign | NgDocVerticalAlign | null {\n\t\tif (NgDocOverlayUtils.isVerticalPosition(position)) {\n\t\t\treturn position.overlayX === 'start' ? 'left' : position.overlayX === 'end' ? 'right' : null;\n\t\t} else {\n\t\t\treturn position.originY === 'top' ? 'top' : position.originY === 'bottom' ? 'bottom' : null;\n\t\t}\n\t}\n\n\tstatic getRelativePosition(pos: NgDocOverlayPosition): NgDocOverlayRelativePosition | null {\n\t\tconst position: ConnectedPosition = NgDocOverlayUtils.toConnectedPosition(pos);\n\t\tif (position.originY === 'bottom' && position.overlayY === 'top') {\n\t\t\treturn 'bottom';\n\t\t}\n\t\tif (position.originY === 'top' && position.overlayY === 'bottom') {\n\t\t\treturn 'top';\n\t\t}\n\t\tif (position.originX === 'start' && position.overlayX === 'end') {\n\t\t\treturn 'left';\n\t\t}\n\t\tif (position.originX === 'end' && position.overlayX === 'start') {\n\t\t\treturn 'right';\n\t\t}\n\t\treturn null;\n\t}\n\n\tstatic getOverlayPosition(positionPair: ConnectionPositionPair): NgDocOverlayPosition {\n\t\tconst existsPosition: NgDocOverlayPosition = Object.keys(POSITION_DESCRIPTION).find(\n\t\t\t(key: string) => {\n\t\t\t\tconst positionDescription: ConnectedPosition = POSITION_DESCRIPTION[key];\n\t\t\t\treturn (\n\t\t\t\t\tpositionPair.originX === positionDescription.originX &&\n\t\t\t\t\tpositionPair.originY === positionDescription.originY &&\n\t\t\t\t\tpositionPair.overlayX === positionDescription.overlayX &&\n\t\t\t\t\tpositionPair.overlayY === positionDescription.overlayY\n\t\t\t\t);\n\t\t\t},\n\t\t) as NgDocOverlayPosition;\n\t\treturn existsPosition ? existsPosition : positionPair;\n\t}\n}\n","import { Point } from '@angular/cdk/drag-drop';\n\nexport class NgDocPositionUtils {\n\t/**\n\t * Getting the position of the element relative to the viewPort, this function is faster than BoundingClientRect,\n\t * it also takes into account the change in the position of the element through transform\n\t * @param element\n\t */\n\tstatic getElementPosition(element: HTMLElement | null): Point {\n\t\tlet xPos: number = 0;\n\t\tlet yPos: number = 0;\n\n\t\twhile (element) {\n\t\t\tif (element === document.body) {\n\t\t\t\tconst documentElement: HTMLElement = document.documentElement;\n\t\t\t\txPos +=\n\t\t\t\t\tdocumentElement.offsetLeft - documentElement.scrollLeft + documentElement.clientLeft;\n\t\t\t\tyPos += documentElement.offsetTop - documentElement.scrollTop + documentElement.clientTop;\n\t\t\t\telement = null;\n\t\t\t} else {\n\t\t\t\tconst elementMatrix: DOMMatrix = new DOMMatrix(element.style.transform);\n\t\t\t\txPos += element.offsetLeft - element.scrollLeft + element.clientLeft + elementMatrix.m41;\n\t\t\t\tyPos += element.offsetTop - element.scrollTop + element.clientTop + elementMatrix.m42;\n\t\t\t\telement = NgDocPositionUtils.getOffsetParent(element) as HTMLElement;\n\t\t\t}\n\t\t}\n\t\treturn { x: xPos, y: yPos };\n\t}\n\n\t/**\n\t * An implementation of the element.offsetParent function, this implementation closes a bug in Firefox when it\n\t * returns an offsetParent for elements with position: fixed\n\t * @param element\n\t */\n\tstatic getOffsetParent(element: HTMLElement): HTMLElement | null {\n\t\tconst computerStyles: CSSStyleDeclaration = getComputedStyle(element);\n\t\tif (computerStyles.position === 'fixed' || computerStyles.display === 'none') {\n\t\t\treturn null;\n\t\t}\n\t\treturn element.offsetParent as HTMLElement;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}